Qualcuno conosce una buona libreria di manipolazione bit per ANSI C? Quello che fondamentalmente bisogno, è la capacità, come in Jovial per impostare i bit specifici in una variabile, qualcosa comeLibreria manipolazione bit per 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}
C'è una biblioteca simile chiamato bitfile, ma non sembra supportare la manipolazione della memoria diretta. Supporta solo l'alimentazione dei bit per i flussi di file.
Non è difficile scrivere, ma se c'è qualcosa di testato, non reinventerò la ruota.
Forse questa libreria esiste come parte di una libreria più grande (bzip2
, gzip
sono i soliti sospetti)?
http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c Se necessario, avvolgi le risposte nelle funzioni. – dmckee
@dmckee le risposte non includono la funzione 'copyBits'. E avvolgere le cose nelle funzioni non è un "must" in generale, ma è un must per un codice ben strutturato. –