¿Alguien sabe una buena biblioteca de manipulación de bits para ANSI C? Lo que básicamente necesito, es la capacidad, como en Jovial para establecer bits específicos en una variable, algo así comoBiblioteca de manipulación de bits para ANSI C
// 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}
Hay una biblioteca similar llamado bitfile, pero no parece apoyar la manipulación directa de memoria. Solo admite la alimentación de bits a las secuencias de archivos.
No es difícil escribir, pero si hay algo probado, no reinventaré la rueda.
Quizás esta biblioteca exista como parte de una biblioteca más grande (bzip2
, gzip
son los sospechosos habituales)?
http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-togegle-a-single-bit-in-c Envuelva las respuestas en funciones si es necesario. – dmckee
@dmckee las respuestas allí no incluyen la función 'copyBits'. Y envolver cosas en funciones no es un "deber" en términos generales, pero es imprescindible para un código bien estructurado. –