2012-03-16 10 views
1

私は8ビットのビットセットを持っています。ファイルに8ビットのビットセットを書き込む(C++)

これらの8ビットを1バイトに変換してファイルに書き込む方法はありますか?

私はどこにでも見ていて、他の方法で変換しているだけです。

ありがとう!

+3

'BitSet'何ですか?それはどこに定義されていますか? –

+4

'BitSet'を' FlooBlar'に変換し、 'FileGizmo'オブジェクトの' jifiddle() 'メンバ関数を呼び出します。 –

+0

あなたはこれを参照していますか? http://www.cplusplus.com/reference/stl/bitset/ –

答えて

2

http://www.cplusplus.com/reference/stl/bitset/

また、直接挿入およびバイナリ形式のストリームから抽出することができます。

何も変換する必要はありません。出力ストリームに書き込むだけです。

これ以外にも、あなたが本当に慣れ親しんでいたものにそれらを抽出したいのであれば、to_ulongto_stringメソッドが用意されています。

符号なしlongよりも多くのビットを保持でき、ストリームに直接書き込む必要がない場合は、文字列に変換してそのルートに移動するか、 []演算子を使用して各ビットにアクセスし、書き込むバイトにシフトします。

+2

あなたが言うように "出力ストリームに書き込むだけで"出力ストリームには一連の '0'と '1'文字が含まれています。ドキュメントが「バイナリ形式のストリームから挿入され抽出された」と言うと、8ビットのグループがバイトとして書き出されると予想されます。例:[code] bitset <8> F( "01000110"); ofstream fs( "test.txt"); fs << F; [/ code]は、文字列 "01000110"ではなく、文字 'F'を含むtest.txtになります。 – Ants

3

C++ STLビットセットについて言えば、ビットセットをint(正確にはulong)に変換し、その結果をcharにキャストします。

例:

#include <bitset> 
#include <iostream> 
using namespace std; 
main() 
{ 
    bitset<8> x; 
    char byte; 

    cout << "Enter a 8-bit bitset in binary: " << flush; 
    cin >> x; 
    cout << "x =  " << x << endl; 
    byte = (char) x.to_ulong(); 
    cout << "As byte: " << (int) byte << endl; 
} 
関連する問題