gpt4 book ai didi

c - C 中十六进制数组到 char* 字符串

转载 作者:行者123 更新时间:2023-11-30 15:22:40 26 4
gpt4 key购买 nike

得到这个问题的答案后:char* string to hex arrary in C

我写了一个函数:

u8 * mac_char_to_hex(char * mac){
static u8 m[6];
sscanf(mac, "%2x%2x%2x%2x%2x%2x", (int *)&m[0], (int *)&m[1], (int *)&m[2], (int *)&m[3], (int *)&m[4], (int *)&m[5]);
return m;
}

它运行良好,然后我想编写一个反向函数,如下所示:

char * mac_hex_to_char(u8 m[]) {
static char * mac;
sprintf((char *) mac, "%2x%2x%2x%2x%2x%2x", (int *)&m[0], (int *)&m[1], (int *)&m[2], (int *)&m[3], (int *)&m[4], (int *)&m[5]);
printf("---------%s-------\r\n",mac);
return mac;
}

那么问题出在哪里呢?

最佳答案

这是未定义的行为。您的变量 mac 未初始化。此外,您不想摆弄指针。改用这个:

char * mac_hex_to_char(u8 m[]){

static char mac[6*2 + 1];
sprintf(mac, "%2x%2x%2x%2x%2x%2x", m[0], m[1], m[2], m[3], m[4], m[5]);
return mac;
}

关于c - C 中十六进制数组到 char* 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137384/

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