Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
Volcar el contenido del archivo binario en una matriz JSON

Tengo un archivo binario que me gustaría empaquetar como una matriz JSON así:

 { "content": [0, 23, 45,...] }

En este momento, descargo el archivo usando hexdump en un archivo separado (para imprimir como u8 sin firmar con comas) y pego manualmente esos contenidos en la matriz:

 hexdump -ve '1/1 "%u," foo.bin > foo_arr

Buscando una mejor manera de lograr esto, preferiblemente a través de la línea de comando (jq, herramientas estándar * nix), JavaScript también podría funcionar, pero prefiero evitarlo.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay una opción:

 hexdump -ve '1/1 "%u\n"' foo.bin | jq -s '{content: .}'

Aquí, uso jq 's -s flag ("slurp") para leer todas las líneas de stdin como una sola matriz, luego simplemente uso esa matriz como el valor de content .

Por ejemplo:

 $ python -c 'open("foo.bin", "wb").write(b"abc")' $ hexdump -ve '1/1 "%u\n"' foo.bin | jq -s '{content: .}' { "content": [ 97, 98, 99 ] }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Usando perl :

 $ printf "\x00\x17\x2d" > foo.bin $ perl -0777 -nE '@bytes = map { ord } split //, $_; $" = ","; # Delimiter when inserting an array into a string say qq/{"content":[@bytes]}/' foo.bin {"content":[0,23,45]}

Lee todo el archivo a la vez ( -O777 -n ) y lo divide en una matriz de bytes, y luego genera el JSON con esos valores de bytes.

about 4 years ago · Juan Pablo Isaza Denunciar

0

jq puede leer la entrada sin procesar usando -R (o --raw-input ) y convertirla a sus números de punto de código usando la función de explode incorporada :

 jq -Rs '{content: explode}' foo.bin

Si el archivo binario no es demasiado grande, también puede leerlo en una variable usando --arg y luego aplicar explode en eso.

 jq -n --arg bin "$(cat foo.bin)" '{content: $bin | explode}'

Nota: jq opera en puntos de código Unicode, mientras que su enfoque actual hexdump traduce recuentos de bytes individuales, por lo que los resultados pueden diferir a este respecto.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda