Теперь у меня есть массив символов с адресом макинтош хранится в:Преобразование символ [] [] на символ [] в C++
char mac_addr[6];
И я sprintf
его в другой массив символов:
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
на удаленный сервер, существует функция синтаксического анализа для синтаксического анализа этого массива символов. После того, как 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'
Большое спасибо!
Edit:
К сожалению, я думаю, что я описал что-то неправильно, текст '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]
в массив символов, как и выше.
' '08'' составляет 2 символов. Вы хотите сохранить номер в виде текста с двумя символами или сохранить фактическое целое число в переменной char? –
@NeilKirk Я думаю, мне нужно, чтобы он хранился как текст. – wangx1ng
@Xing Почему вы так думаете? 'mac_addr' должно содержать фактическое целое число для'% 02x', и вы говорите «переконвертировать». Разве это не означает, что вы хотите сохранить адрес в 'my_mac' в том же формате, что и' mac_addr'? – MikeCAT