Me gustaría generar un paquete binario sin formato a partir de hexadecimal en la línea de comando con el fin de probar un protocolo. Espero que sea más sencillo hacerlo de esta manera que escribir una aplicación.
Esto es lo que sucede actualmente:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Lo que me gustaría tener es:
echo '0A' | xxd -b
0000000: 00001010
o
echo '0A' | xxd -b
0000000: 01010000
Como no estoy seguro de la resistencia requerida. Me gustaría poder cambiarlo cuando sea necesario. ¿Es esto posible?
fuente
50
. Es un error tipográfico. Arreglando ahoraSi desea que la salida binaria para una cadena de dígitos hexadecimales,
xxd -r -p
. P.ej:convierte 0A0B0C0D en cuatro bytes de binario (primera llamada a xxd) y luego lo vuelve a convertir para que se pueda imprimir (segunda llamada). Dices que quieres una salida binaria, pero los ejemplos que estás intentando son una representación imprimible.
No sé de nada donde la endianidad sea ambigua a nivel de mordisco, como implicas en tu segundo ejemplo. La conversión en xxd es un byte puro a la vez, sin suponer que representan un número particular de varios bytes.
fuente
Sí, puede
xxd
hacerlo, pero puede que no le guste el formato de entrada. Según su ejemplo, 0x0a es el valor hexadecimal de una nueva línea ASCII. Puede crear un archivo con una nueva línea nueva y luego usarloxxd
para crear la lista:Puede obtener una nueva línea de
xxd
esa salida si le da los indicadores adecuados:xxd
tiene un formato de salida bastante bueno, no creo que sea demasiado oneroso crear sus paquetes usando un editor de texto, luego usexxd -r
para ir a binario. .fuente