Olá, eu to desenvolvendo um programa para ler determinado tipo de arquivo e ler as informações dos pacotes desse arquivo em nivel de bits.
No caso o pacote é dividido da seguinte forma:
SYC 8 bits
TEI 1 bits
PSI 1 bits
TP 1 bits
PID 13 bits
TSC 2 bits
AFC 2 bits
CC 4 bits
Minha dúvida é, como faço para pegar os bits separadamente, como o do PID por exemplo que 5 bits se encontram na posição 1 do array e 8 bits na posição 2, já que só tenho acesso a um byte por vez o qual contém 8 bits.
Tenho esse exemplo de código para pegar o PID e o mesmo reproduz o resultado correto:
int pid1 = (buf[1] << 8) | (buf[2] & 0xff);
O que não consegui entender foi o motivo das operações logicas da equação, principalmente o buf[1]<<8
. Alguem saberia me explicar essa equação e como devo proceder nos próximos bits?
Obrigado.