打印

求救啊 8字节16进制转十进制 大侠们给看看啊 搞不出来了

[复制链接]
3912|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ql1007|  楼主 | 2010-8-5 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题:
8字节16进制转十进制
a[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,x08}
我现在拼接成了 高低 两个long型的 Num=0x1020304 NUM1=0x5060708;
怎么转成20位的十进制啊?因为最后涉及到显示 没办法 必须得算出这个十进制。。。
大家给看看啊 帮帮忙 谢谢
沙发
sunjy516| | 2010-8-5 20:34 | 只看该作者
实在不行就用汇编,先将Num除以10依次转换成10进制,余数加上Num1按同样的方式转

使用特权

评论回复
板凳
兰天白云| | 2010-8-12 21:12 | 只看该作者

本帖最后由 兰天白云 于 2010-8-12 21:14 编辑

以下是2字节16进制数转换成10进制数(最大9999),我只用了2字节变量

你可以把循环16次改为循环64次(8字节),并且把变量改成需要的长度
用C写也是可以的,直接把我的汇编翻译成C吧

BINBCD     MOVLW  10H    ;R4R5-->R1R2
           MOVWF  R0     ;29 LINE
           CLRF   R1     ;R0R1R2 R4R5R6
           CLRF   R2
LOOPC1     RLF    R5,1
           RLF    R4,1
           RLF    R2,1
           RLF    R1,1
           DECFSZ R0,1
           B      ADJDEC1
           RETLW  00H
ADJDEC1    MOVLW  R2
           MOVWF  FSR
           CALL   ADJBCD
           MOVLW  R1
           MOVWF  FSR
           CALL   ADJBCD
           B      LOOPC1
ADJBCD     MOVLW  03H
           ADDWF  0,0
           MOVWF  R6
           BTFSC  R6,3
           MOVWF  0
           MOVLW  30H
           ADDWF  0,0
           MOVWF  R6
           BTFSC  R6,7
           MOVWF  0
           RETLW  00H

使用特权

评论回复
地板
兰天白云| | 2010-8-12 21:19 | 只看该作者
2的64次方=18446744073709551616
朋友,你哪里需要这么大的数?

使用特权

评论回复
5
123jj| | 2010-8-14 12:42 | 只看该作者
坛子里的这篇**,LZ可参考一下。

[AVR 单片机] 主题:电工常识之(4):用AVR汇编 编写的8字节16进制转十进制程序
https://bbs.21ic.com/frame.php?fr ... c.com/iclist-9.html

使用特权

评论回复
6
123jj| | 2010-8-15 09:18 | 只看该作者
这篇是用C写的,直接可复制引用。

[AVR 单片机] 主题:电工常识之(5):用AVRGCC 编写的8字节16进制转十进制程序
https://bbs.21ic.com/frame.php?fr ... c.com/iclist-9.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

122

帖子

0

粉丝