gpt4 book ai didi

将带十六进制的无符号整数转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:23 25 4
gpt4 key购买 nike

我有一个 _u8 数组,其中包含十六进制,例如:A81B6A9D4D2E。我想将其转换为以下形式的字符串:A8-1B-6A-9D-4D-2E 并将其作为字符串发送。

#define SL_MAC_ADDR_LEN     UINT8_C(6)
_u8 wlanMacAddressVal[SL_MAC_ADDR_LEN];

我可以使用循环打印它,如下所示:

for(int i = 0; i < SL_MAC_ADDR_LEN; i++){
printf(%X, wlanMacAddressVal[i]);
printf("-");
}

但是当我尝试制作一个字符串/字符数组并使用 strcat 函数时,我的结果总是奇怪的符号。

我试过在循环中使用 sprintf(),但它总是会覆盖最后的十六进制数

sprintf(wlanMacString,"%X",(_u8 *)wlanMacAddressVal[i]);

最佳答案

使用 sprintf02x 格式说明符。

char buf[SL_MAC_ADDR_LEN*3]; //2*number of hex bytes + number of `-` symbols + \0.


char *p = buf;
for (int i=0;i<SL_MAC_ADDR_LEN;i++)
p += sprintf(p, i ? "-%02hhx":"%02hhx", _u8Array[i]);

请注意,您需要提前 p 以跳过缓冲区中到目前为止打印的字节数。

关于将带十六进制的无符号整数转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56643666/

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