C++ У меня есть следующая структура:битого сдвиг в
struct SysData
{
// Topic (32 bits)
UTL_UINT16_Tdef SystemID:11; // set to decimal 25
UTL_UINT16_Tdef TypeID:5; // set to 2 (telemetry type)
UTL_UINT16_Tdef ContentID; // set to decimal 1234
}
SysData MsgHdr;
MsgHdr.SystemID = 25;
MsgHdr.TypeID = 2;
MsgHdr.ContentID = 0;
Если я что-то вроде этого:
unsigned int a;
memcpy(&a, &MsgHdr, sizeof(MsgHdr));
headerInfo[0] = a & 0x7FF;
headerInfo[1] = (a >> 16) & 31;
headerInfo[2] = (a >> 21) & 0xFFFF;
headerInfo [0] должны иметь значение 25, но она имеет 36. Что я делаю неправильно?
Что такое тип 'headerInfo'? – mjschultz
@mjschultz headerInfo - это массив unsigned int – Blade3
Почему вы так делаете ... если бы «союз» не подходит? – t0mm13b