我有意见
unsigned char hex[64] = 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a0"
我想要这样的输出:
unsigned char tmpInHash[32] = { 0x9f, 0x86, 0xd0, 0x81, 0x88, 0x4c, 0x7d, 0x65, 0x9a, 0x2f, 0xea, 0xa0, 0xc5, 0x5a, 0xd0, 0x15, 0xa3, 0xbf, 0x4f, 0x1b, 0x2b, 0x0b, 0x82, 0x2c, 0xd1, 0x5d, 0x6c, 0x15, 0xb0, 0xf0, 0x0a, 0x08 }
我到处寻找答案,但我找到的答案不合适。
编辑
当我写的时候我想要:
for(i=0; i< strlen(tmpInHash); i++ {
printf("%c ", tmpInHash);
}
我明白了:
0x9f 0x86 0xd0 0x81 0x88 0x4c 0x7d 0x65 0x9a ...
这可能吗?
最佳答案
一种转换方式如下:
- 遍历字符串的每一项,其中每 2 个字符代表一个数字。
- 拆分每个这样的字符对并将它们存储在一个临时字符串中:
char tmp {str[i], str[i+1], '\0'};
。 - 对该字符串调用
strtol(tmp, NULL, 16)
以获取整数。
关于c - 我不明白如何在 C 中将十六进制字符串转换为无符号字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203235/