可能重复:
Hex to char array in C
我有一个包含十六进制字符的char [10]数组,我想最终得到这些字符值的byte [5]数组。
一般来说,我如何从char [2]十六进制值(30)变为单个十进制字节(48)?
语言实际上是Arduino,但基本的C最好。
答案 0 :(得分:0)
1字节= 8位= 2 x(十六进制数字)
你可以做的是将存储在一个字节中的十六位数移位4位(或者乘以我的16位)然后加上第二个字节,它有第二个十六进制数字。
所以要将十六进制中的30转换为十进制中的48:
答案 1 :(得分:0)
“ch”中的字符数组,字节数组为“out”
byte conv[23] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15};
// Loop over the byte array from 0 to 9, stepping by 2
int j = 0;
for (int i = 0; i < 10; i += 2) {
out[j] = conv[ch[i]-'0'] * 16 + conv[ch[i+1]-'0'];
j++;
}
未测试。
诀窍在数组'conv'中。它是ASCII表的一个片段,从字符0开始。-1是'9'和'A'之间的垃圾。
哦,这也不是一个安全或防御的例程。错误的输入将导致崩溃,故障等。