[英]Converting char[][] to char[] in C++
現在我有一個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
后,用:
分隔的六個部分存儲在multi char數組中:
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數組。
您可以在stdlib.h
使用strtol
函數
char *dummy;
for (int i = 0; i < 6; i++) {
my_mac[i] = strtol(mac[i], &dummy, 16);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.