Tengo un archivo binario que estoy leyendo, donde algunos valores de 2 bytes se almacenan en orden de bytes "invertidos" (little endian?), Por ejemplo.Cómo cambiar el orden de los bytes de los datos binarios
1D 00 13 00 27 00 3B 00 45 00 31 00 4F
El programa original que creó estos valores los almacena internamente como cortos. Esos valores deberían corresponder a: 29, 19, 39, 59, 69, 49, 79. Estoy tratando de leer estos valores usando Python 2.6.5 (aunque esto probablemente se ejecutará en sistemas mucho más antiguos, por ejemplo, 2.3 y 2.4) .
He intentado usar
val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
y, por supuesto, los valores salir todo mal:
7427
4864
9984
15104
17664
12544
20224
Después de buscar en la documentación de estructura, pensé que sería capaz usar algo como
val1, ... = struct.unpack("!h !h ...
pero cuando las pruebas, sólo tengo
struct.error: bad char in struct format
¿Cómo puedo descomprimir estos valores con el orden de bytes correcto? ¿Estoy atascado leyendo los dos bytes por separado y luego volviéndolos a ensamblar en el código python?
Aha, eso fue todo. Tengo varios especificadores de formato en la cadena de formato, pero solo coloque el carácter de orden byte delante del especificador 'h' en lugar de al comienzo de toda la cadena. ¡Gracias! – pfyon