我正在从文件中读取大量整数。它们都将是 0 或 1,因此我已将每个读取的整数转换为布尔值。
我需要做的是通过将每 8 位/布尔值打包成一个字符来利用字符提供的空间(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?
更新
反映了清除字符位的更改。
谢谢大家的帮助。