Я просматривал все доступные команды шестнадцатеричного дампа с открытым исходным кодом (не интересуюсь шестнадцатеричными редакторами).

Сначала я попробовал hexdump:

Но hexdump не смог распечатать числа в двоичном формате. Единственные опции, о которых я заботился, были шестнадцатеричные, восьмеричные и опции флага -C.

Лучше подошел xxd:

Лучшим в нем было то, что он мог произвольно устанавливать количество столбцов, отображаемых в двоичном, восьмеричном или шестнадцатеричном режиме, с помощью флага -c [число].

Но мне не понравилось, как по умолчанию сгруппированы четыре шестнадцатеричных числа. По правде говоря, вы могли просто изменить это с помощью флага -g 1, но меня раздражало то, что мне приходилось устанавливать его каждый раз, когда мне приходилось использовать эту команду. Казалось, что не было причин для отображения более двух шестнадцатеричных цифр, сгруппированных вместе в столбце. В конце концов, если текстовый дисплей ASCII отображает один символ на каждые две шестнадцатеричные цифры, в столбце должно быть только две шестнадцатеричные цифры, верно?

xxd был хорош, но имел функции, которые мне не нравились, например флаг -g.

Итак, я попробовал крутой и красочный гексил:

Но то, как отображался текст ASCII, меня раздражало. Посмотрите на все эти «x» и точки. Все, о чем я заботился, это цветовые коды. Что еще хуже, мне пришлось приложить немало усилий, чтобы загрузить Rust на свой компьютер и в груз - и это все для этой команды, которую я тестировал. Я предпочитаю команды терминала, написанные на C, поскольку они быстрые и переносимые. Что касается чертежей коробки, то это для меня совершенно не имело значения. Просто убедитесь, что все столбцы расположены равномерно, и этого достаточно.

Самым большим недостатком гексила является то, что он поддерживает только шестнадцатеричный режим. Он не поддерживает двоичный или восьмеричный режим, как xxd.

В этот момент я решил сделать свой собственный шестнадцатеричный дамп:

Мой шестнадцатеричный дамп, названный tscd, сочетает в себе то, что я считал лучшим из всех шестнадцатеричных дампов, упомянутых здесь ранее. На фотографии выше вы можете увидеть определенные шестнадцатеричные числа с цветовой кодировкой.

Ниже представлена ​​схема кодирования цветов (ASCII):

Красный: непечатаемые символы ASCII.

Оранжевый: печатные (буквенные) символы

Желтый: основание 10 числовых цифр.

Зеленый: символы пробела ASCII

Фиолетовый: знаки препинания

Серый: байт NUL (00)

tscd унаследовал параметр -c (КОЛИЧЕСТВО СТОЛБЦОВ) от xxd.

Он может отображать шестнадцатеричный, двоичный, восьмеричный и даже десятичный коды, по одному коду для каждого символа в столбце.

И да, он может распечатать дамп в отдельный файл.

ПОЛНЫЙ ОТКАЗ: В отдельном файле не будут отображаться цветовые коды, так как невозможно применить цветовые коды ASCII с помощью функции C printf к отдельному файлу.

Ссылку на исходный код tscd можно найти по следующему URL-адресу:

Https://github.com/tanveerasalim/TSCD

В эмуляторе терминала, который поддерживает 256-битные цвета ASCII (например, xterm-256, CYGWIN, xfce4-terminal, macOS xterm-256 или iTerm2 для macOS), сделайте следующее:

gcc tscd4.c -o tscd

sudo cp tscd / usr / bin

Вуаль. Команда tscd должна работать во всей вашей системе.

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

Наслаждайтесь моим (шестнадцатеричным) дампом! И, пожалуйста, дайте мне знать о любых предложениях, комплиментах, жалобах, критике и ненавистных письмах по адресу: [email protected]