Я объявил структуру с битовыми полями, в C / C ++ размер структуры равен 5, как и ожидалось, а в Python - 6. (Python 3.5.2 (по умолчанию, 12 ноября 2018, 13: 43:14))
from ctypes import *
class sHeader(LittleEndianStructure):
_pack_ = 1
_fields_ = [
("Field1", c_uint8, 4),
("Field2", c_uint16, 12),
("Field3", c_uint16, 12),
("Field4", c_uint16, 12)]
print(sizeof(sHeader))
Прикрепленный код C ++ здесь:
#include <array>
#include <iostream>
struct __attribute__((packed)) sHeader{
uint8_t Filed1: 4;
uint16_t Filed2: 12;
uint16_t Filed3: 12;
uint16_t Filed4: 12;
};
int main()
{
std::cout << sizeof(sHeader) << std::endl;
return 0;
}