2013-03-10 6 views
-1

Я довольно новичок в python и только что начал работать где-то. Попытались понять кусочек кода, который был написан здесь разработчиком, который ушел, и я не мог ничего понять.Чтение данных в разных форматах с использованием распаковки в python

В принципе, я знаком с тем, что делает unpack(), но формат, который использовался в некоторых местах, оставляет меня в замешательстве!

var1, var2, var3, var4 = struct.unpack('!6xBB4xI4xI', data)

является оператор присваивания для 4-х переменных. Теперь это то, что я понял, о формате используется для распаковки и я считаю, это правильно: -

«х»: разделение значения (отступа бит как указывает @ shx2 в ответ ниже)

6: прочитайте 7-й символ от начала (начало быть с индексом 0) в тупоконечника формате

I: целое число без знака

Now, I haven't been able to figure out the formats:- 
BB4 - does that mean read 8 bytes (as the B stands for unsigned char, so BB could mean 2 sets of unsigned char)? 
I4 - reading 4 bytes and getting the integer value! 

Моя интерпретация о других 2-х форматах вполне может быть неправильно также - я просто пытаюсь чтобы понять это из онлайн-документа python и данных, которые я вижу во время отладки. Пожалуйста, поправьте меня, где бы я ни ошибался.

ответ

0

с данными в формате Big Endian, struct.unpack('!6xBB4xI4xI', data) означает:

6: 6 подушечка байт
B: Один символ без знака
B: Один символ без знака 4: Pad Байты
I: Один Unsigned Int
4: Пад байтов
I: Один без знака Int

Общая структура имеет 24 байта

+0

Спасибо тонну :) –

2

Вы находитесь вдали ... Прочитайте doc.

! - это порядок сети (= big-endian).

x является байт-байт.

И я уверен, что вы можете выяснить остальное.

+0

Спасибо за помощь .. Я на самом деле имел в виду то же самое о битрейде, просто не процитировал одно и то же слово :) Не могли бы вы помочь мне в отношении того, что будет с BB4 и I4 (B - неподписанный символ и I - беззнаковый int)? Я также обновил свой вопрос с помощью полного оператора присваивания - как вы можете видеть, 4 переменные получают значения, оцениваемые; это продиктовано байтом заполнения 'x'? –

Смежные вопросы