Eu gostaria de gerar um pacote binário bruto a partir de hex na linha de comando com a finalidade de testar um protocolo. Espero que seja mais simples fazê-lo dessa maneira do que escrever uma aplicação.
Aqui está o que acontece atualmente:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
O que eu gostaria de ter é:
echo '0A' | xxd -b
0000000: 00001010
ou
echo '0A' | xxd -b
0000000: 01010000
Desde que eu não tenho certeza sobre o endianess necessário. Eu gostaria de poder alterá-lo quando necessário. Isso é possível?
fonte
50
. É um erro de digitação. Corrigindo agora #Se você deseja a saída binária para uma sequência de dígitos hexadecimais
xxd -r -p
,. Por exemplo:converte 0A0B0C0D em quatro bytes de binário (primeira chamada para xxd) e depois converte-o novamente para ser imprimível (segunda chamada). Você diz que deseja uma saída binária, mas os exemplos que está tentando são uma representação imprimível.
Não sei de nada em que o endianismo seja ambíguo no nível da mordidela, como você sugere no seu segundo exemplo. A conversão em xxd é um byte puro por vez, não assumindo que eles representem um número de vários bytes específico.
fonte
Sim, você pode usar
xxd
isso, mas pode não gostar do formato de entrada. No seu exemplo, 0x0a é o valor hexadecimal de uma nova linha ASCII. Você pode criar um arquivo com uma única nova linha e usarxxd
para criar a listagem:Você pode obter uma única nova linha
xxd
dessa saída se fornecer os sinalizadores adequados:xxd
tem um formato de saída bastante agradável, não acho que seria muito oneroso criar seus pacotes usando um editor de texto e depois usáxxd -r
-lo para acessar o binário. .fonte