gpt4 book ai didi

C 编程将十六进制的字符串表示形式转换为十六进制

转载 作者:行者123 更新时间:2023-11-30 14:47:22 25 4
gpt4 key购买 nike

我对 C 还很陌生。我想将十六进制数字的字符串表示形式转换为实际的十六进制数字?

#include <stdio.h>
int main()
{
char buf[8] = "410C0000";
printf("%s\n",buf);
return 0;
}

我想分解字符串并将其转换为 4 个单独的十六进制数字。我可以进一步处理以进行计算:

0x41 0x0C 0x00 0x00

最佳答案

您可以使用 sscanf,它是 scanf 的变体,它从字符串而不是从标准输入或文件读取。格式说明符 %X 指定将输入视为十六进制数字,%02X 还表示读取精确的两位数字,%02hhX 还定义将结果存储到单个字节中(即 unsigned char,而不是可能的 64 位整数值)。

代码如下所示:

int main()
{
char buf[8] = "410C0000";

unsigned char h0=0, h1=0, h2=0, h3=0;
sscanf(buf+6, "%02hhX", &h0);
sscanf(buf+4, "%02hhX", &h1);
sscanf(buf+2, "%02hhX", &h2);
sscanf(buf+0, "%02hhX", &h3);
printf("0x%02X 0x%02X 0x%02X 0x%02X\n",h3, h2, h1, h0);
return 0;
}

输出:

0x41 0x0C 0x00 0x00

顺便说一句:buf - 由于大小为 8 - 将不包含以 '\0' 结尾的字符串,因此您将无法在 中使用它> printf 。如果您想将 buf 也用作字符串,请编写 char buf[9],例如当编写 printf("%s\n",buf) 时。

关于C 编程将十六进制的字符串表示形式转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com