我尝试了许多其他线程的建议都没有用。
我正在做霍夫曼编码,遇到麻烦的部分是让我的string 'byte'
(通常是长度8)作为字符写入输出二进制文件。每当我打开输出文件时,这些位与我认为的输入完全不同。另外,当我在将字符串'byte'转换为char型字节后输出char 'c'
时,'c'
的二进制文件与我的原始输入不匹配。例如,'c'
将是一个10位字符,而我总体上感到非常困惑。
那么,如何正确执行此操作?还是问题可能在其他地方?
代码如下:
if (byte.length() >= 8) {
bitset<8> b(byte.substr(0, 8));
c = static_cast<unsigned char>(b.to_ulong());
flit.write(&c, 1);
}
byte
-包含我的位字符的字符串flit
-输出文件流