私は、TBytesからの乱数の読み取りに関連する問題に直面しました。まず、私はこの質問のアドバイスに従いました(ubitstream.pasユニットの使用に関する答え)。Handling arbitrary bit length data in Delphi? 私の例: binaryfeed(TBytes)=(255,0,0,0,0,0,6,132,1,112 、128,128,130,81)。Delphi:TBytesからXビットを読み取る方法は?
- 私は8ビットを読み取って255 - okを取得します。位置は8です。
- 私は別の24ビットを読んで0 - okを取得します。ポジションは、私がなぜそれを理解することができます0000 0000 0000 0110
された別の24ビットを読み、位置が56
393216で393216代わりに6の取得32
この「乱数」は、常に8ビットの倍数ですか?その場合は、バイトを読み取ることができます。これがビッグエンディアンの場合、複数のバイトは次のように整数に結合されます: 'value:= nextByte + value * 256; numBits:= numBits - 8; 'を繰り返します。 –
あなたが探しているのが本当に「ビットアクセス」の場合(それはそうではありませんが、@ DavidHeffernanの回答を参照)、System.ClassesのDelphiのTBitsクラスを調べる必要があります。pas –