现在我有了一个char数组,它的mac地址存储在:
char mac_addr[6];我将其sprintf到另一个char数组中:
char cmdstr[64];
sprintf(cmdstr, "MAC: %2x:%2x:%2x:%2x:%2x:%2x;",
mac_addr[0], mac_addr[1], mac_addr[2],
mac_addr[3], mac_addr[4], mac_addr[5]);当我打印cmdstr时,它看起来如下:
MAC: 08:10:76:10:26:21;然后我将cmdstr发送到远程服务器,有一个解析函数来解析这个char数组。解析cmdstr后,由:分隔的六个部分存储在多个字符数组中:
char mac[6][10];通过以下方式:
char mac[0] = "08"
char mac[1] = "10"
char mac[2] = "76"
char mac[3] = "10"
char mac[4] = "26"
char mac[5] = "21" 现在,在服务器端,如何将mac地址的每个部分重新转换为char,并使整个mac地址可以存储在这样的char数组中成为可能?
char my_mac[6];通过以下方式:
my_mac[0] = '08'
my_mac[1] = '10'
my_mac[2] = '76'
my_mac[3] = '10'
my_mac[4] = '26'
my_mac[5] = '21'非常感谢!
编辑:
对不起,我想我描述错了,文本'08'本身不应该存储在my_mac[0]中。实际上,当我开发这个程序时,我发现:
(gdb) p mac_addr[0]
$15 = 8 '\b'
(gdb) p mac_addr[1]
$16 = 16 '\020'
(gdb) p mac_addr[2]
$17 = 118 'v'
(gdb) p mac_addr[3]
$18 = 16 '\020'
(gdb) p mac_addr[4]
$19 = 38 '&'
(gdb) p mac_addr[5]
$20 = 33 '!'我认为我应该像上面一样将mac[6][10]转换成char数组。
发布于 2015-09-25 03:04:30
您可以在strtol中使用stdlib.h函数
char *dummy;
for (int i = 0; i < 6; i++) {
my_mac[i] = strtol(mac[i], &dummy, 16);
}https://stackoverflow.com/questions/32774107
复制相似问题