¿Cómo puedo volcar un archivo con valores de tipo float en la línea de comandos?
Tengo un archivo que contiene una secuencia sin procesar de valores de punto flotante de 4 bytes, sin encabezados, sin formatos, nada más. Quiero imprimir algunos de los valores en formato legible para los humanos, digamos desde el n-ésimo número flotante hasta el n-ésimo número flotante, inclusivo.
¿Cuál es una forma sencilla de hacer esto en un entorno de línea de comandos similar a Unix?
davy.ai
Una forma de lograr esta tarea es utilizar el comando
od
, que se puede utilizar para volcar archivos en varios formatos. En particular, podemos utilizarlo para volcar los valores de punto flotante en el archivo como texto legible para humanos.Suponiendo que el archivo que contiene la secuencia cruda de valores de punto flotante de 4 bytes se llama
data.bin
, podemos imprimir los valores de punto flotante desde eln_1
-ésimo hasta eln_2
-ésimo de la siguiente manera:Este comando hace lo siguiente:
-f
especifica que el formato de salida debe ser valores de punto flotante-An
suprime la columna de direcciones en la salida-j $((4*(n_1-1)))
especifica que la volcada debe comenzar en el desplazamiento de byte4*(n_1-1)
en el archivo (ya que cada valor de punto flotante ocupa 4 bytes)-N $((4*(n_2-n_1+1)))
especifica que se deben imprimirn_2-n_1+1
valores de punto flotante, cada uno ocupando 4 bytesdata.bin
es el archivo de entrada que contiene los valores de punto flotante en brutoEste comando debería producir la salida solicitada. Nota que
n_1
yn_2
deben ser reemplazados por los índices reales de los valores de punto flotante que deseas imprimir.