誰もANSI C用のビット操作ライブラリをよく知っていますか?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}
bitfileと呼ばれる同様のライブラリがありますように、変数に何かを特定のビットを設定し、直接のメモリ操作をサポートしていないようJovialのように、私は基本的に必要なもの は、能力があります。ファイルストリームにビットを供給することのみサポートしています。
書くのは難しいことではありませんが、テストされているものがあれば、私はホイールを再発明しません。
多分、このライブラリは大きなライブラリの一部として存在します(bzip2
、gzip
は通常の容疑者です)?
http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c必要に応じて、関数内で回答を囲みます。 – dmckee
@dmckeeそこの答えは 'copyBits'機能を含んでいません。また、関数をラップすることは、一般的には「必須」ではありませんが、構造化されたコードでは必須です。 –