2016-11-23 3 views
1

Простой вопрос, если сделать следующее:Форматы символов формата Python, почему это больше, чем должно быть?

import struct 
struct.calcsize("6cHcBHIIQ") 

возвращает 32, когда я считаю, что это должно быть 28.

, выполнив следующие действия (отсутствует Q):

import struct 
struct.calcsize("6cHcBHII") 

возвращает 20 , чего я ожидаю.

и делает:

import struct 
struct.calcsize("Q") 

возвращает 8, который является правильным.

Почему добавление Q в верхний результат приводит к ожиданию 12 дополнительных байтов вместо 8?

Python 3, машины для окон.

Спасибо.

+0

Просто обновите этот вопрос: такое же поведение можно воспроизвести на Ubuntu 14.04. – Fejs

ответ

1

Вы также можете уменьшить размер путем перепрофилирования их в лучшей стороне:

struct.calcsize("QIIHHB6cc") 

дает 28, как правило, следует ожидать, набивка быть виновником в любых вопросах размера структуры. См. Why isn't sizeof for a struct equal to the sum of sizeof of each member? за хороший ответ о том, почему размеры структуры иногда могут быть больше, чем кажется.

+0

Спасибо за это. Id Я распаковываю байты из файла, тогда строка формата должна быть в правильном порядке, не так ли? – BloodSexMagik

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