2016-10-14 3 views
1

Как сказано в заголовке, меня заинтересовал лучший способ преобразования двоичной строки в шестнадцатеричную строку в C. Бинарная строка имеет 4 бита, поэтому преобразование в один шестнадцатеричный символ будет Лучший.Преобразование двоичной строки в шестнадцатеричную строку C

Спасибо за любую помощь, я не уверен, есть ли что-то встроенное, чтобы сделать это проще, поэтому у меня нет собственной попытки опубликовать сообщение.

+0

Что вы подразумеваете под "best"? Самый быстрый? Простой код? – samgak

+0

@samgak Извините, простейший, без ужасно плохого качества. Не слишком беспокоился о производительности. Спасибо –

+0

Ваш вопрос слишком широк и не по теме. StackOverflow не является услугой кодирования. – 2501

ответ

2

Вы можете использовать strtol для преобразования двоичной строки в целое число, а затем sprintf для преобразования целого числа в шестнадцатеричной строки:

char* binaryString = "1101"; 

// convert binary string to integer 
int value = (int)strtol(binaryString, NULL, 2); 

// convert integer to hex string 
char hexString[12]; // long enough for any 32-bit value, 4-byte aligned 
sprintf(hexString, "%x", value); 

// output hex string 
printf(hexString); 

Выход:

d 

Если это гарантированно будет один шестнадцатеричный символ просто принимает hexString[0].

Смежные вопросы