0

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

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

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

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

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

在我的 main 中,我定义了一个 ofstream obj 并使用以下命令打开了一个二进制文件:

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

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

writeObj.inByte(1001011);

但是,当我检查文件时,它全是象形文字。它没有显示字母 K,其二进制表示形式为 1001011。

我究竟做错了什么?

4

2 回答 2

2

这个

writeObj.inByte(1001011);

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

于 2013-05-15T04:21:13.127 回答
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在你的文件中看到。

于 2013-05-15T04:20:39.360 回答