gpt4 book ai didi

c - 在 C 中如何将字节数组转换为十六进制字符串?

转载 作者:太空狗 更新时间:2023-10-29 16:15:48 26 4
gpt4 key购买 nike

我有:

uint8 buf[] = {0, 1, 10, 11};

我想将字节数组转换为字符串,以便我可以使用 printf 打印该字符串:

printf("%s\n", str);

并获取(不需要冒号):

"00:01:0A:0B"

如有任何帮助,我们将不胜感激。

最佳答案

printf("%02X:%02X:%02X:%02X", buf[0], buf[1], buf[2], buf[3]);

更通用的方式:

int i;
for (i = 0; i < x; i++)
{
if (i > 0) printf(":");
printf("%02X", buf[i]);
}
printf("\n");

要连接到一个字符串,有几种方法可以做到这一点。我可能会保留一个指向字符串末尾的指针并使用 sprintf。您还应该跟踪数组的大小,以确保它不会大于分配的空间:

int i;
char* buf2 = stringbuf;
char* endofbuf = stringbuf + sizeof(stringbuf);
for (i = 0; i < x; i++)
{
/* i use 5 here since we are going to add at most
3 chars, need a space for the end '\n' and need
a null terminator */
if (buf2 + 5 < endofbuf)
{
if (i > 0)
{
buf2 += sprintf(buf2, ":");
}
buf2 += sprintf(buf2, "%02X", buf[i]);
}
}
buf2 += sprintf(buf2, "\n");

关于c - 在 C 中如何将字节数组转换为十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357031/

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