2012-03-22 4 views
1

オブジェクトのビットを取得する必要があります。言い換えれば、オブジェクトを生データとして扱い、オブジェクトの0ビットと1ビットを抽出したいと考えています。これどうやってするの?例えばオブジェクトのビットストリーム(0と1)を抽出します。

Iは、以下のように

std::vector<NodeEntry *> vec; 
を VEC と呼ばれるユーザー定義型のベクトルを有する

オブジェクトへ点VEC。このオブジェクトはメモリ内にあり、0ビットと1ビットで構成されます。このオブジェクトのビットストリーム(0と1)をどのように抽出できますか?

+0

ポインタの配列のビットを取得したいですか? それは何が良いでしょうか? – manasij7479

+0

vec変数が参照しているオブジェクトのビットを取得したい。私はそのビットに消去コードアルゴリズムを適用したい。換言すると、消失コードアルゴリズムの入力は生データ(0および1ビット)である。 – ManiAm

+1

ポインタをchar *またはbyte *にキャストしてください。もちろん、オブジェクトのサイズを計算することは難しいことです。 –

答えて

0
vector<NedeEntry*> vec; 
// populate vec 
char* rawData = reinterpret_cast<char*>(&vec); 
for (char* tmp=rawData; tmp != rawData+sizeof(vec); ++tmp) { 
    // extract 0s and 1s from *tmp 
} 

上記のコードは、あなたのベクトルオブジェクトのバイナリ表現を与えるだろうが、あなたが実際に欲しいものに応じて、これはあなたが後にあるWAHTではないかもしれないことに注意してください。たとえば、このコードでは、ほとんどの場合、動的に割り当てられた配列(おそらく)に格納されているポインタがベクターに格納されているため、その配列のアドレスのバイナリ表現は得られません。

また、含まれているオブジェクトのバイナリ表現をしたい場合は、たとえば、内部配列のアドレスを表すバイト・シークスを把握するための移植可能な方法がないため、多くの魔法が必要になります。あるいは、ベクトルを繰り返し処理して、個々のコンテンツオブジェクト(あなたの例ではポインタ)上で同様のロジックを実行することができます。それらを適切に処理するには、カスタムコードなどが必要です。

+0

OPは、ベクトルではなく*ポインタ*のビットストリームが必要であることを明確に指定しています。 – Puppy

+0

@DeadMG - ポストでは、OPがポインターを欲しいということについて何か言っていますか?彼はオブジェクト自体のビットストリームを望んでいると述べました。それ以外にも、たとえそれがあったとしても、私はポインタにもどうやって到達するかについてのアイデアを出しました – Attila

関連する問題