char readBuf[] = "96 36 D4 D1 F8 C1 8A E0 BF 29 10 91 3C 4D F1 5D 08";
我想将每对值转换为十六进制值,以便在新的char []中有17个单独的十六进制值。
结果相当于在代码中写这个:
char hexStr[] = {0x96, 0x36, 0xD4, 0xD1, 0xF8, 0xC1, 0x8A, 0xE0, 0xBF, 0x29, 0x10, 0x91, 0x3C, 0x4D, 0xF1, 0x5D, 0x08}
我不知道如何从readBuf构造一个新的十六进制值,将它添加到一个新的char []。
答案 0 :(得分:1)
这样的事情:
char readBuf[] = "96 36 D4 D1 F8 C1 8A E0 BF 29 10 91 3C 4D F1 5D 08";
size_t length = strlen(readBuf);
// ideally the length of this should be computed from the string length and allocated dynamically
uint8_t result[17];
size_t pos = 0;
while(pos * 3 < length) {
int value;
int scanned = sscanf(readBuf + pos * 3, "%x", &value);
if(scanned == 1) {
result[pos] = value;
pos ++;
} else {
fprintf(stderr, "Invalid hex number at %zu", pos * 3);
break;
}
}