簡體   English   中英

在C ++中將char [] []轉換為char []

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM