【发布时间】:2013-07-30 11:23:50
【问题描述】:
我正在努力在处理过程中将字符串理解为十六进制字符串。我正在编写一个小程序,我将输入 ascii 文本作为十六进制字符串。
那是我读到的:
char *str = "313233";
这实际上是 0x31、0x32 和 0x33,实际上是字符串“123”。
我需要一个无符号字符数组,如下所示:
unsigned char val[] = {0x31, 0x32, 0x33};
当我尝试 sscanf 或 sprintf 时,他们希望整数数组成为目标指针:(
也就是说,类似于:
sprintf(str, "%2x", &val[0]);
如何做到这一点?也许这很微不足道,但不知何故我很困惑。
谢谢。
【问题讨论】:
-
0x31不是31的十六进制数 -
在我的帮助下,stackoverflow 上有一个类似的问题:stackoverflow.com/questions/3408706/…
-
@DavidRF true,但在我的情况下,我得到一个十六进制输入作为字符串,因此我确定该字符串是一个十六进制字符串:)
-
sscanf(str, "%2hhx%2hhx%2hhx", &val[0], &val[1], &val[2]);