将“ 8位”(字节)字符串写入二进制文件吗?

时间:2019-02-28 03:57:48

标签: c++

我尝试了许多其他线程的建议都没有用。

我正在做霍夫曼编码,遇到麻烦的部分是让我的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-输出文件流

1 个答案:

答案 0 :(得分:0)

您是否有理由试图将您的比特集表示为无符号长号?从您的描述中听起来,bitset::to_string link

的功能涵盖了您要执行的操作