Я хотел бы сгенерировать необработанный двоичный пакет из hex в командной строке с целью тестирования протокола. Я надеюсь, что сделать это проще, чем написать заявление.
Вот что сейчас происходит:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Что я хотел бы иметь:
echo '0A' | xxd -b
0000000: 00001010
или
echo '0A' | xxd -b
0000000: 01010000
Так как я не уверен в том, что нам нужен порядок байтов. Я хотел бы иметь возможность изменить его при необходимости. Это достижимо?
источник
50
. Это опечатка. Исправление это сейчасЕсли вы хотите двоичный выход для строки шестнадцатеричных цифр,
xxd -r -p
. Например:преобразует 0A0B0C0D в четыре байта двоичного файла (первый вызов xxd), а затем преобразует его обратно для печати (второй вызов). Вы говорите, что хотите двоичный вывод, но примеры, которые вы пытаетесь использовать, являются печатным представлением.
Я не знаю ничего, где порядок байтов на уровне клевов неоднозначен, как вы подразумеваете в своем втором примере. Преобразование в xxd является чистым байтом за раз, не предполагая, что они представляют какое-то конкретное многобайтовое число.
источник
Да, вы можете использовать
xxd
это, но вам может не понравиться формат ввода. В вашем примере 0x0a - это шестнадцатеричное значение новой строки ASCII. Вы можете создать файл с одной новой строкой, а затем использоватьxxd
для создания списка:Вы можете получить одну новую строку
xxd
из этого вывода, если вы установите для нее правильные флаги:xxd
имеет довольно хороший формат вывода, я не думаю, что было бы слишком обременительно создавать ваши пакеты с помощью текстового редактора, а затем использоватьxxd -r
для перехода в двоичный файл. ,источник