У меня есть массив символов (адрес ethernet, такой как aa:bb:cc:dd:ee:ff
), что мне нужно разобрать на unsigned char[6]
. Я использую strtok для получения каждой пары символов, и мне нужно отбросить их в unsigned char, но ничего, что я делаю, работает.Правильный способ преобразования char * length 2 в unsigned char?
Я пытался (пусть c
это символ * длины 2):
unsigned char t = (unsigned char)c; // gives "loses precision" error
unsigned char* t = (unsigned char*)c;
unsigned char t1 = t[0]; // gives the wrong value
unsigned char t;
strcpy((char*)t, c); // gives the wrong value
strncpy((char*)t, c, sizeof(char)*2) // gives the wrong value
Как произносится 'c'? Также есть ошибка в коде 'strncpy'. –
@macs исправлено. см. выше. – xdumaine
Вы пробовали ['strtoul (c, NULL, 16)'] (http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/)? Вероятно, это даст вам предупреждение «потеря точности», но приведет к получению целого числа без знака (со значением «0xAA» для первого токена и т. Д.). – DCoder