从此问题得到答案后: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", (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;
}
最后,在阅读@harper答案后,我得到了正确的功能。并做一些修改:
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;
}