楼主:
chrisos (克里斯)
2015-06-10 09:44:15※ 引述《hccash (风雨飘摇)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VS 2008
: 问题(Question):
: 请问板上各位大大
: 今天假设我有一BYTE数值为0x01
: 我如何转换为两个ASCII - 0x30 0x31
: 并且储存成为WORD大小0x3031呢?
: 感谢!
借文问一下,那请问如果是0xA2的状况呢?
原文中推文的解答是利用取值加上0x30的方式,但这方式只能对应到0~9
ascii表中A是由0x41开始 a是由0x61开始
如果我有一组乱数产生的HEX档,我要怎么做转换会比较好?
ps:补充一下平台,使用在Microchip上,compiler为XC8,相容于C99规范(纯C)
通通normalize成0-15,然后随便你爱加多少。
楼主:
chrisos (克里斯)
2015-06-10 10:29:00欸...不是很懂XD 可以稍微解释一下吗QQ
不管你处理[0-9A-F]或[0-9a-f]都可以转成0..15吧
楼主:
chrisos (克里斯)
2015-06-10 10:42:00转成0~15是指原文中 value & 0x0f 的这种方式吗?
作者:
EdisonX (卡卡兽)
2015-06-10 12:26:00你可以用if else,结果正确就行。
作者:
Feis (永远睡不着 @@)
2015-06-10 13:18:00或者你喜欢让人家看不懂:12336+(s>>4<<8)+s%16+(s>=160)*1792+(s%16>=10)*7
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-06-10 13:28:00至少也用 switch 吧, if-else 也太夸张 XD
楼主:
chrisos (克里斯)
2015-06-10 13:40:00对了 value就是1Byte hex ASCII阵列是2 Byte ASCII然后array里面应该写0、1比较好,没注意到
作者:
firejox (Tangent)
2015-06-11 18:24:00Ascii[1] = "0123456789abcdef"[(value&0xf0)>>4]
楼主:
chrisos (克里斯)
2015-06-12 09:42:00?? 上面是?
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-06-12 23:15:00长短不是问题啊, 效率和可维护性才是
作者:
firejox (Tangent)
2015-06-15 00:39:00用索引取值的方式 算是一个简单好读的方法