2011-09-11 21 views
1

バイナリファイルから指定されたバイト数を読み込み、1と0の文字列に変換する関数を記述しようとしています。それを行う最も簡単な方法は何ですか? ファイルはBigEndianにあります。バイナリファイルを読み込んでバイナリ文字列に変換する

string ReadBytesFromFile(int size) 
{ 
    string result; 
    ifstream file ("example.bin", ios::in|ios::binary|ios::ate); 
    if (file.is_open()) 
    {   
     memblock = new char [size]; 
     file.seekg (0, ios::beg); 
     file.read (memblock, size); 
     file.close(); 

     //need to convert memblock to binary string 
     result = GetBinaryString(memblock); 

     delete[] memblock; 

    } 
    return result; 
} 
+0

最も簡単な方法は、おそらくビットセットまたはitoaを使用している可能性があります。 –

+0

skipwsフラグを解除することを忘れないでください。 –

答えて

2

一度に1バイトずつ取り出し、ビットを1つずつシフトします。

のような何か:基数として2を渡す

std::ostringstream ss; 
for (int i=0; i<size; ++i) { 
    char byte = memblock[i]; 
    for (int j=0; j<8; ++j) { 
    ss << byte & 1; 
    byte = byte << 1;  
    } 
} 
2

コールitoa()。あなたのバッファーをオーバーランさせないようにしてください!

注:これはCまたはC++標準の一部ではないため、移植性がないことに注意してください。しかし、あなたは移植性よりもむしろ頼んだのです!

+0

OK、正しい方法は何ですか? – Naush

+0

標準ライブラリの一部ではありませんが、ポータブルにしたい場合に使用できるオープンソースの実装があると確信しています。 –

関連する問題