Ho un file binario che sto leggendo dove alcuni valori di 2 byte sono memorizzati nell'ordine dei byte 'reverse' (little endian?), Ad es.Come cambiare l'ordine dei byte dei dati binari
1D 00 13 00 27 00 3B 00 45 00 31 00 4F
Il programma originale che ha creato questi valori li memorizza internamente come corti. Questi valori dovrebbero corrispondere a: 29, 19, 39, 59, 69, 49, 79. Sto provando a leggere questi valori usando python 2.6.5 (anche se questo probabilmente sarà eseguito su sistemi molto più vecchi, ad esempio 2.3 e 2.4) .
Ho provato con
val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
e, naturalmente, i valori di tutti escono sbagliato:
7427
4864
9984
15104
17664
12544
20224
Dopo aver guardato la documentazione per struct, ho pensato che sarebbe in grado usare qualcosa come
val1, ... = struct.unpack("!h !h ...
ma quando i test, ho ottenuto solo
struct.error: bad char in struct format
Come posso decomprimere questi valori con l'ordine dei byte corretto? Sono bloccato a leggere i due byte separatamente, quindi li riassemblo nel codice Python?
Aha, era così. Ho molti specificatori di formato nella stringa di formato, ma ho inserito il carattere di ordine byte davanti allo specificatore 'h' invece che all'inizio dell'intera stringa. Grazie! – pfyon