У меня есть пакет данных, и когда я назначаю эти данные переменным бит за битом в соответствии с требованиями, между ними не хватает нескольких байтов. Не знаю почему? Я работаю в C ++.
Например, у меня есть структура типа:
struct __attribute__((packed))
{
uint32 varA:9;
uint32 varB:10;
uint32 varC:9;
uint32 varD:4;
uint16 varE:16;
uint32 varF:32;
}structA;
И у меня есть данные как: a0 1a 0d 00 01 42 00 1 c 17 2d
Все идет хорошо до переменной varD. Когда доходит до varE, он должен присвоить ему 01 42, но в нем отсутствует 01 и используется только 42. И после этого все идет нормально.
И если я делаю это вот так
struct __attribute__((packed))
{
uint32 varA:9;
uint32 varB:10;
uint32 varC:9;
uint32 varD:4;
uint8 varE:8;
uint8 varF:8;
uint32 varG:32;
}structA;
Назначение битов работает нормально. Есть идеи, почему это происходит?