【问题标题】:Converting a string of hex formatted numbers into a look up hex array将一串十六进制格式的数字转换为查找十六进制数组
【发布时间】:2022-01-09 21:07:28
【问题描述】:

我想将此char 格式化十六进制值数组转换为十六进制值查找表。
像这样的:

char crc_input[300] = "abcd12344f..."; // input
unsigned char buf[4096] = { 0xab, 0xcd, 0x12, ... }; // output

我试过这段代码:

char crc_input[300] = "abcd12344f";
unsigned char buffer[20];
unsigned char output[400];

buffer[0] = crc_input[0]; // a
buffer[1] = crc_input[1]; // b

sprintf(output[0], "0x%s%s", buffer[0], buffer[1]);

printf("output[0] : %s",output[0]);

但显然unsigned char 数组不能保存整个 0xXX 值。 有没有其他方法可以解决这个问题?

【问题讨论】:

标签: arrays c hex


【解决方案1】:

您的方法存在一个基本缺陷,即sprintf 可能不是您想要的。它不会进行数据转换,只会对数据进行解释。此外,该函数需要一个指向 char 数组的指针,但您传递的是数组的第一个元素。

您似乎想要将 ASCII HEX 编码的字符串转换为字节数组,因此@Gerhardh 提供的建议是正确的。如果您真的想编写自己的例程,那么我建议您改用sscanf 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2018-01-22
    • 2011-08-04
    相关资源
    最近更新 更多