Который программа (Hex-редактор) может преобразовать от шестнадцатеричной строки кода до unicode?

Предположим, что у меня есть строка, возвращенная в Json, как

004100610061

Строка. Но, если интерпретируется как Шестнадцатеричное число, и затем как Unicode, это будет означать

Aaa

Какой Hex-редактор может обеспечить способность декодировать это?

С Благословляют, я смог вставить шестнадцатеричное число, но не делаю способный видеть Unicode.

0
задан 12 November 2016 в 15:28

3 ответа

Вы могли просто использовать xxd. Например:

xxd -r -p <(echo 004100610061)

, Конечно, что привычка вставила дополнительную новую строку, таким образом, Вы могли бы хотеть сразу вызвать эхо также, например:

xxd -r -p <(echo 004100610061) ; echo

С другой стороны, возможно, сумасшедшее перенаправление делает те команды сбивающими с толку, поэтому возможно, могло бы быть легче следовать за тем, что это делает этот путь:

echo 004100610061 | xxd -r -p ; echo

xxd читает вход из эха, и-r говорит для движения от шестнадцатеричного дампа назад к двоичному файлу, и-p говорит, забывают о поиске информации об адресе в шестнадцатеричном дампе, и затем эхо вставляет дополнительную новую строку. Таким образом, эти команды - все просто xxd чтение его входа из стандарта в, преобразование шестнадцатеричных значений назад в двоичный файл и затем отображение их.

Редактирование: Как @Rudd указывает, это просто будет двоичным выходом. Ваш терминал, вероятно, проигнорирует непечатаемые биты и глупо интерпретирует его как ASCII, так прикрепите некоторые дополнительные байты на там и перенаправьте Ваш вывод в файл для более точного преобразования.

, Например, если Вы знаете, Ваш вход является обратным порядком байтов utf-16:

echo feff004100610061 | xxd -r -p > output.txt

представление Then результат в unicode-осведомленном редакторе.

, Например:

vim output.txt

Для другого кодирования BOM, см. Википедия

2
ответ дан 28 September 2019 в 04:57

Можно уйти из установки дополнительного мягкий и использовать редактора Vi/Vim, который интегрируется в любом дистрибутиве Linux.

команда (:s) замены Vi позволяет делать это через следующий шаблон:

 :%s/\(\x\{4\}\)/\=nr2char('0x'.submatch(1),1)/g

Простой :s замена только текущая строка, тогда как :%s замены кодирует во всех строках.
существует несколько других способов упростить представление Unicode в Vim, но они требуют диграфы установки или плагины.

Примечание: для вышеупомянутой реализации Вам нужен полнофункциональный VIM, но не крошечные VIM. nr2char параметр допустим только от версии 7.4, если у Вас есть более низкая версия VIM, можно поместить этот параметр в стороне, который не должен влиять на функциональность всегда.

1
ответ дан 28 September 2019 в 04:57

В Perl:

echo 004100610061 | perl -CS -pe 's/[0-9A-F]{4}/chr(hex($&))/egi'

Вывод:

Aaa

Параметр командной строки -CS силы производят, чтобы быть закодированным UTF-8.

1
ответ дан 28 September 2019 в 04:57

Другие вопросы по тегам:

Похожие вопросы: