Czy ktoś zna dobrą bibliotekę manipulacji dla ANSI C? Co ja w zasadzie potrzebne, jest możliwość, podobnie jak w Jovial ustalenie konkretnych bitów w zmiennej, coś jakBiblioteka manipulacji bitami dla 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}
Jest podobna biblioteka nazywa bitfile, ale nie wydaje się, aby wspierać bezpośrednią manipulację pamięci. Obsługuje tylko bity podające do strumieni plików.
Nie jest trudno napisać, ale jeśli jest coś przetestowanego - nie wymyślę na nowo koła.
Może ta biblioteka istnieje jako część większej biblioteki (bzip2
, gzip
to zwykle podejrzani)?
http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c Owiń w odpowiedzi funkcje, jeśli musisz. – dmckee
@dmckee odpowiedzi tam nie zawierają funkcji 'copyBits'. I owijanie rzeczy w funkcje nie jest "koniecznością" ogólnie rzecz biorąc, ale jest koniecznością dla dobrze zorganizowanego kodu. –