0

何が起こっているのかわかりませんが、バイナリ モードでファイルに書き込むために ofstream オブジェクトを使用しています。

ファイルにバイトを書き込んでいますが、ファイルが意味不明に印刷されています。このタイプの意味不明なものを印刷しています:ôß

次のように定義されByteOutputた関数で呼び出されるクラスがあります。inByte

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

&buffer1バイトのデータを格納するために使用しているビットバッファへの参照です

私のメインでは、ofstream obj を定義し、次を使用してバイナリでファイルを開きました。

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

ByteOutput以下を使用して、オブジェクトを使用してファイルに 1 バイトのデータを書き込みます。

writeObj.inByte(1001011);

しかし、ファイルを確認すると、すべて象形文字です。バイナリ表現 1001011 を持つ文字 K は表示されません。

私は何を間違っていますか?

4

2 に答える 2

2

これ

writeObj.inByte(1001011);

整数 = 1,001,001 10 進数で関数を呼び出します。2 進数ではありません。

于 2013-05-15T04:21:13.127 に答える
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ファイルに表示されます。

于 2013-05-15T04:20:39.360 に答える