我不确定发生了什么,但我正在使用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。
我做错了什么?
答案 0 :(得分:2)
这个
writeObj.inByte(1001011);
使用整数= 1,001,001十进制调用函数,而不是二进制。
答案 1 :(得分:1)
如果您想使用二进制文件,请考虑hex
或std::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
。