Ребята, есть структура:
void* p = 02b05e1fa6c10000e997f00002e997f01209040919e5030904093be506090409cde52404e998f0180a046974610009040919e5030904093be506090409cde52404e992f0180a04756e640009040919e5030904093be506090409cde52416a00e13;
97 байт.
Описал первую часть заголовка структурой с битовыми полями:
typedef struct Bits_
{
unsigned tableID : 8;
unsigned SectionSyntaxIndicator : 1;
unsigned Reserved1 : 1;
unsigned Reserved2 : 2;
unsigned SectionLength : 12;
unsigned ProgramNumber : 16;
unsigned Reserved3 : 2;
unsigned VersionNumber : 5;
unsigned CurrentNextIndicator : 1;
unsigned SectionNumber : 8;
unsigned LastSectionNumber : 8;
unsigned Reserved4 : 3;
unsigned PCRPid : 13;
unsigned Reserved5 : 4;
unsigned ProgramInfoLength : 12;
} Bits;
Пытаюсь получить доступ к нужным мне битам:
Bits *pmtFields = reinterpret_cast<Bits*>(data);
printf("tableID=%.2X\n", pmtFields->tableID);
printf("SectionSyntaxIndicator=%.2X\n", pmtFields->SectionSyntaxIndicator);
printf("Reserved1=%.2X\n", pmtFields->Reserved1);
printf("Reserved2=%.2X\n", pmtFields->Reserved2);
printf("SectionLength=%.2X\n", pmtFields->SectionLength);
printf("ProgramNumber=%.2X\n", pmtFields->ProgramNumber);
printf("VersionNumber=%.2X\n", pmtFields->VersionNumber);
printf("CurrentNextIndicator=%.2X\n", pmtFields->CurrentNextIndicator);
printf("SectionNumber=%.2X\n", pmtFields->SectionNumber);
printf("LastSectionNumber=%.2X\n", pmtFields->LastSectionNumber);
printf("Reserved4=%.2X\n", pmtFields->Reserved4);
printf("PCRPid=%.2X\n", pmtFields->PCRPid);
printf("Reserved5=%.2X\n", pmtFields->Reserved5);
printf("ProgramInfoLength=%.2X\n", pmtFields->ProgramInfoLength);
Вывод:
tableID=02 - правильно!
SectionSyntaxIndicator=00 -Должна быть 1
Reserved1=00 -Должен быть 0
Reserved2=00 -Неважно
SectionLength=5EB -должно быть 5E
ProgramNumber=C1A6 Должен быть 1FA6
VersionNumber=00 Ну и так далее....
CurrentNextIndicator=00
SectionNumber=00
LastSectionNumber=E9
Reserved4=07
PCRPid=1E12
Reserved5=00
ProgramInfoLength=902
SectionSyntaxIndicator=00
Reserved1=00
Reserved2=00
SectionLength=F5E
Котаны, подскажите, че не так? :)
p.s. вот ссылка на полное описание структуры:
www.etherguidesystems.com/help/sdos/mpeg/syntax/ta...