现在我有一个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程序时,我发现:
(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数组。
答案 0 :(得分:0)
您可以在strtol
stdlib.h
功能
char *dummy;
for (int i = 0; i < 6; i++) {
my_mac[i] = strtol(mac[i], &dummy, 16);
}