免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Twintc
打印 上一主题 下一主题

[算法] 16进制byte转换成10进制byte数组 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-02-28 13:05 |只看该作者
原帖由 Twintc 于 2009-2-28 13:01 发表



不行!!!

看 ntohl sprintf 这两个函数在 GNU libc 或者 newlibc 或者其他开源 libc 里面怎么实现的

论坛徽章:
0
12 [报告]
发表于 2009-02-28 13:09 |只看该作者
如果这样的话,我觉得你就应该像做加法运算一样,一步一步的求,先计算个位,再算十位,这样弄吧

论坛徽章:
0
13 [报告]
发表于 2009-02-28 17:25 |只看该作者
MOD 10,结果存入;
/ 10;
反复做,行嘛?

论坛徽章:
0
14 [报告]
发表于 2009-02-28 18:16 |只看该作者
原帖由 beepbug 于 2009-2-28 17:25 发表
MOD 10,结果存入;
/ 10;
反复做,行嘛?



答案见8楼。

论坛徽章:
0
15 [报告]
发表于 2009-03-01 08:53 |只看该作者
我看不懂8楼的话。Hex仅仅是你在代码里的书写形式,机器里存的还是Bin。

论坛徽章:
0
16 [报告]
发表于 2009-03-01 09:49 |只看该作者
原帖由 beepbug 于 2009-3-1 08:53 发表
我看不懂8楼的话。Hex仅仅是你在代码里的书写形式,机器里存的还是Bin。


%10, /10大家都很容易想到,但大家都忽略了一个前提,那就是只能用short,byte两种类型,要%10,/10,就要先把hex数组转换成数值吧,但这个数值有可能远远大于short所能表达的最大值啊!这种情况下拿什么来%10,/10?

论坛徽章:
0
17 [报告]
发表于 2009-03-01 11:14 |只看该作者
原帖由 Twintc 于 2009-2-28 12:52 发表


这是在工作中遇到的实际需求,由于想不出什么解法,故来此求教!


实际需求为什么不能用库函数?

另:byte 是unsigned char ?

论坛徽章:
0
18 [报告]
发表于 2009-03-01 11:23 |只看该作者
直接用汇编里面的DAA等转换指令

论坛徽章:
0
19 [报告]
发表于 2009-03-01 14:19 |只看该作者
中间变量不用int有啥意义?你不用,CPU也在用。在计算char、byte、short、int,CPU内部计算都是int。

论坛徽章:
0
20 [报告]
发表于 2009-03-01 20:24 |只看该作者
原帖由 beepbug 于 2009-3-1 14:19 发表
中间变量不用int有啥意义?你不用,CPU也在用。在计算char、byte、short、int,CPU内部计算都是int。


因为我的环境相当特殊,特殊到只有byte,short,boolean类型,现在有些新版本的已经可以支持int了,但是为了兼容性,
所以目前不会考虑用int!要是能用的话我也就不用这么头痛了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP