为什么我写的文件打印乱码?

时间:2013-05-15 04:13:19

标签: c++

我不确定发生了什么,但我正在使用ofstream对象以二进制模式写入文件。

我正在向文件写一个字节,但该文件正在打印乱码。它正在打印这种类型的乱码:ôß

我有一个名为ByteOutput的类,其函数名为inByte,定义如下:

void inByte(int byte)
{
    ostreamObj.write(&buffer, byte & 255);
}

&buffer是对我用来存储数据字节的位缓冲区的引用

在我的主要内容中,我定义了一个ofstream obj并使用以下方法打开二进制文件:

obj.open("tester", std::ios::binary);

我使用ByteOutput对象使用以下命令将一个字节的数据写入文件:

writeObj.inByte(1001011);

然而,当我检查文件时,它都是象形文字。它没有显示字母K,它具有二进制表示1001011。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

这个

writeObj.inByte(1001011);

使用整数= 1,001,001十进制调用函数,而不是二进制。

答案 1 :(得分:1)

如果您想使用二进制文件,请考虑hexstd::bitset

#include <bitset>
#include <iostream>
using namespace std;

int main()
{
    int a = 0x4B;    // 01001011
    bitset<8> bs(a);
    cout << hex << a << endl;
    cout << bs << endl;
}

如果您将std::bitset输出到文件,则每个位都会表示为char,即您将在文件中看到01001011