ファイルから読み取っている整数が大量にあります。それらはすべて0または1になるので、読み取った各整数をブール値に変換しました。
私がする必要があるのは、8ビット/ブールごとに1つの文字にパックすることによって、文字が提供するスペース(8ビット)を利用することです。これどうやってするの?
二項演算を試しましたが、思いついたものがありません。
int count = 7;
unsigned char compressedValue = 0x00;
while(/*Not end of file*/)
{
...
compressedValue |= booleanValue << count;
count--;
if (count == 0)
{
count = 7;
//write char to stream
compressedValue &= 0;
}
}
アップデート
これまでに提案されたいくつかの修正を反映するようにコードを更新しました。次の質問は、unsigned charを初期化/クリアするにはどうすればよいですか?
アップデート
文字ビットをクリアするための変更を反映しました。
皆さん、助けてくれてありがとう。