Как создать массив с шестнадцатеричными символами из массива чисел - PullRequest
0 голосов
/ 27 января 2012

У меня есть массив символов:

char macChars=[12];

Содержание этого, например, macChars [0] = 53, macChars [1] = 66 ... Мне нужно преобразовать эти числа в шестнадцатеричные символы, чтобы у меня был другой массив:

 macCharsHex[0]=5 //value 53 in hex
 macCharsHex[1]=B //value 66 in hex

Спасибо.

Ответы [ 4 ]

1 голос
/ 27 января 2012

Это должно работать:

    char hex[255] = {0};       // Varible to hold the hex value
    int dec = 1234;            // Decimal number to be converted
    sprintf(hex,"%X", dec);
    printf("%s", hex);         // Print hex value
1 голос
/ 27 января 2012

Если предположить ASCII, ваш пример уже содержит значения, которые вы хотите, чтобы они содержали.Так что вам не нужно ничего конвертировать.Может быть, вы хотите их напечатать?

1 голос
/ 27 января 2012

Используйте sprintf(), например. Обратите внимание, что это займет больше места, если у вас есть 12 байтов, вам понадобится 24 + 1 байт для строкового представления, поскольку каждый байт требует двух символов в шестнадцатеричном виде и затем завершающего байта '\ 0'.

Я подозреваю, что вообще не понимаю вопроса, особенно в приведенном примере.

Если у вас есть macChars[0] == 53, то есть 0x35 в гексе, тогда я ожидаю получить maxCharsHex[0] == '3' и macCharsHex[1] == '5' после того, как первый char будет конвертирован. Это делается так с sprintf():

sprintf(maxCharsHex, "%02x", (int) macChars[0] & 0xff);

Актер и маска должны быть в безопасности для подписанных персонажей.

0 голосов
/ 27 января 2012

Они уже преобразованы, поскольку символы в Си представлены соответствующими им кодами символов.

Поэтому, что касается хранения вещей в массивах, вам ничего не нужно делать, и если вы хотите "5"и" B ", чтобы правильно отображаться при печати или делать что-то подобное, это вопрос использования правильной функции печати (putchar, printf с% c и т. д.).

...