#c #string #binary #char #hex
#c #строка #двоичный #символ #шестнадцатеричная
Вопрос:
Как сказано в названии, меня интересовал наилучший способ преобразования двоичной строки в шестнадцатеричную строку на C. Двоичная строка не более 4 бит, поэтому преобразование в один шестнадцатеричный символ было бы наилучшим.
Спасибо за любую помощь, я не уверен, что есть что-то встроенное, чтобы упростить это, поэтому пока не предпринимаю попыток опубликовать.
Комментарии:
1. Что вы подразумеваете под «лучшим»? Самый быстрый? Самый простой код?
2. @samgak Извините, проще всего, не будучи ужасно низкой производительностью. Не слишком беспокоясь о производительности. Спасибо
3. Ваш вопрос слишком широкий и не по теме. StackOverflow не является сервисом кодирования.
4. @2501 Как новичку в C, мне было действительно интересно, есть ли что-то встроенное, чтобы упростить это, в отличие от написания моей собственной функции. Спасибо за ваше мнение, хотя
5. преобразовать двоичную строку в int с помощью atoi с основанием 2, а затем int в шестнадцатеричную строку с помощью sprintf
Ответ №1:
Вы можете использовать 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]
.