2012-01-11 4 views
-1

Мне было интересно, почему при попытке конвертировать шестнадцатеричное число, как 0x1C, в онлайн-конвертер шестнадцатеричных в ascii. Я получаю пустую строку. Аналогично, когда я использую простой код, он возвращает странный символ. Но когда я пытаюсь преобразовать что-то вроде 0x34, он отлично работает. Есть идеи?Преобразование hex в ascii

+0

См. [Эту ссылку] (http://web.cs.mun.ca/~michael/c/ascii-table.html) для списка таблицы Ascii, в котором уточняются печатные и непечатаемые символы и [эта ссылка ] (http://www.asciitable.com/) для полной таблицы с расширенными также –

+0

Retagged: не имеет ничего общего с C++. – Mac

ответ

0

0x1C - это разделитель файлов, поэтому он не будет отображаться как «обычный» символ. Я бы предложил посмотреть таблицу ASCII, такую ​​как this one. Не все выйдет как символ a-zA-Z0-9.

+0

Отлично, я посмотрел на стол, как вы сказали, однако визуальная студия показывает мне 0x13 как «L» вместо «19», что говорит таблица, какие-то идеи? – user541597

+0

@ user541597 0x13 не отображает «19», 19 - десятичный эквивалент 0x13. Первые 3 столбца являются эквивалентными кодами только в разных базах, поэтому 0x13 эквивалентен 19 десятичной, что эквивалентно 023 в восьмеричном. Фактическим символом, соответствующим 0x13, является «управление устройством 3». – Yuushi

1

0x1C является символом «разделитель файлов»: это элемент управления (то есть непечатаемый), и поэтому, когда он отображается, вы обычно получаете какой-то глифа-заменитель, отображаемый на вашем экране. С другой стороны, 0x34 является символом «4» и, следовательно, отлично печатается как есть.

Все символы ASCII до 0x20 (пробел) являются непечатаемыми управляющими символами и будут отображаться таким же образом, как и 0x1C.

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