Кто-нибудь знает хорошую библиотеку битовых манипуляций для ANSI C?
Что мне в основном нужно, так это способность, как в Jovial , устанавливать конкретные биты в переменной, что-то вроде
// I assume LSB has index of 0
int a = 0x123;
setBits(&a,2,5, 0xFF);
printf("0x%x"); // should be 0x13F
int a = 0x123;
printf("0x%x",getBits(&a,2,5)); // should be 0x4
char a[] = {0xCC, 0xBB};
char b[] = {0x11, 0x12};
copyBits(a,/*to=*/4,b,/*from=*/,4,/*lengthToCopy=*/8);
// Now a == {0x1C, 0xB2}
Есть похожая библиотека, которая называется bitfile , но, похоже, она не поддерживает прямое манипулирование памятью. Он поддерживает только передачу битов в файловые потоки.
Писать несложно, но если что-то будет проверено - я не буду изобретать велосипед.
Может быть, эта библиотека существует как часть большей библиотеки (bzip2
, gzip
- обычные подозреваемые)?