Как изменить порядок байтов двоичных данных

У меня есть двоичный файл, который я читаю, где некоторые двухбайтовые значения хранятся в «обратном» порядке байтов (little endian?), Например.

1D 00 13 00 27  00 3B 00 45  00 31 00 4F

Исходная программа, создавшая эти значения, хранит их внутри как шорты. Эти значения должны соответствовать: 29, 19, 39, 59, 69, 49, 79. Я пытаюсь прочитать эти значения с помощью python 2.6.5 (хотя это, вероятно, будет работать в гораздо более старых системах, например, 2.3 и 2.4). .

Я пробовал использовать

val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)

, и, конечно же, все значения получаются неверными:

7427
4864
9984
15104
17664
12544
20224

Посмотрев документацию по структуре, я подумал, что смогу использовать что-то вроде

val1, ... = struct.unpack("!h !h ...

, но когда тестирование, я получил только

struct.error: bad char in struct format

Как мне распаковать эти значения с правильным порядком байтов? Я застрял в чтении двух байтов по отдельности, а затем снова собираю их в коде Python?

8
задан pfyon 2 November 2011 в 16:17
поделиться