| 12345678910111213141516171819202122232425 |
- #include "section.h"
- /* shamelessly stolen from dvbsnoop, but modified */
- u32 getBits (const u8 *buf, int startbit, int bitlen)
- {
- const u8 *b;
- u32 mask,tmp_long;
- int bitHigh,i;
- b = &buf[startbit / 8];
- startbit %= 8;
- bitHigh = 8;
- tmp_long = b[0];
- for (i = 0; i < ((bitlen-1) >> 3); i++) {
- tmp_long <<= 8;
- tmp_long |= b[i+1];
- bitHigh += 8;
- }
- startbit = bitHigh - startbit - bitlen;
- tmp_long = tmp_long >> startbit;
- mask = (1ULL << bitlen) - 1;
- return tmp_long & mask;
- }
|