c - 我不明白如何在 C 中将十六进制字符串转换为无符号字符?

标签 c type-conversion hex unsigned-char

我有意见

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/

相关文章:

c - 在 c 中实现 xml 解析器

c - 为什么要为此代码打印 -1,当位域设置为 1 时,我认为它是 1?

c - 分割输入

c - C的移位运算中使用变量时出错

haskell - 在 case 语句中解析错误

javascript - JavaScript 中 parseFloat 的第二个参数?

generics - 使用泛型进行对象转换

c++ - 如何将 tstringstream 的内容传递给接受 LPTSTR 的方法?

javascript - 在 JavaScript 中将 float 转换为 32 位十六进制字符串

c - 从 BLE 接收的数据无法从十六进制转换为字符串(北欧)