Örneğin, 2 bayt değerinin 'ters' bayt düzeninde (küçük endian?) Depolandığı bir ikili dosyam var.İkili verinin bayt sırası nasıl değiştirilir
1D 00 13 00 27 00 3B 00 45 00 31 00 4F
Bu değerleri oluşturan orijinal program, bunları dahili olarak şort olarak depolar. Bu değerler aşağıdakilere karşılık gelmelidir: 29, 19, 39, 59, 69, 49, 79. Bu değerleri python 2.6.5 kullanarak okumaya çalışıyorum (bu muhtemelen daha eski sistemlerde çalışacaktır, örneğin 2.3 ve 2.4) .
Ben
val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
kullanarak denedim ve tabii ki değerler tüm yanlış çıkarlar:
7427
4864
9984
15104
17664
12544
20224
yapı belgelerine baktıktan sonra ben mümkün olacağını düşünmüştüm
val1, ... = struct.unpack("!h !h ...
ama böyle bir şey kullanmak test, sadece
varstruct.error: bad char in struct format
Bu değerleri doğru bayt sıralamasıyla nasıl açabilirim? İki bayttan ayrı olarak okumaya devam ettim mi python kodunda onları yeniden birleştiriyordum?
Aha, buydu. Biçim dizisinde birkaç biçim belirleyicim var, ancak yalnızca tüm dizenin başlangıcında yerine "h" belirticinin önüne bayt sırası char yerleştirildi. Teşekkürler! – pfyon