【发布时间】:2011-10-19 11:15:07
【问题描述】:
我想将两个 ASCII 字节转换为一个十六进制字节。 例如。
0x30 0x43 => 0x0C , 0x34 0x46 => 0x4F ...
ASCII 字节是介于 0 和 9 之间的数字或介于 A 和 F 之间的字母(仅限大写字母),因此介于 0x30 ... 0x39 和 0x41 之间。 ..0x46
我知道如何用数字0x34 和0x46 : 0x4F = 0x34 * 0x10 + 0x46“构造”0x4F
所以,事实上,我会将一个 ASCII 字节转换为十六进制值。
为此,我可以构建和排列以将十六进制值分配给 ASCII 字符:
0x30 => 0x00
0x31 => 0x01
...
0x46 => 0x0F
但是,也许它有一个最“合适”的解决方案。
该程序将在 AVR µC 上运行并使用 avr-gcc 编译,因此 scanf() / printf() 解决方案不适合。
你有想法吗? 谢谢
【问题讨论】:
-
没有 ASCII 字节或十六进制字节之类的东西。
-
您(显然!)想要做的是 convert 一对字节到单个字节,通过将两个字节解释为 ASCII 符号它又代表十六进制数字,并发出相应的十六进制值。解决这类问题需要准确了解你真正在做什么;和精确的沟通也有很大帮助:) 你必须确保你从根本上理解什么是数据。正如大卫所说,字节只是字节;没有 ASCII 字节或十六进制字节。
-
ASCII 字节 = 表示 ASCII 字符的字节,十六进制字节 = 以十六进制表示的字节。我知道字节只是字节;我只是不知道该怎么解释。但其他人已经明白我的意思了。不是最重要的吗?