0

重複
の可能性: オクテット文字列を埋める

オクテット文字列に入力する必要がある異なるビット長の 65 個のパラメーターがあります。パラメータは、オクテット文字列で連続して埋められます。たとえば、最初のパラメータが 1 ビット長であると仮定すると、オクテット文字列の 1 番目のオクテットの 0 番目のビット位置で埋められます。ここで、2 番目のパラメーターは 9 ビットの長さとします。したがって、このパラメーターの最初の 7 ビットは同じオクテットで埋められ、次の 2 ビットは次のオクテットの 0 番目と 1 番目のビット位置に移動する必要があります。同様に、他のパラメーターはオクテット文字列に入力されます。現在のオクテットへのポインター、ビット位置、およびデータがコピーされるソースポインターを渡す関数を作成しようとしました。しかし、私はロジックの実装に困難を感じています。多数のロジック (ビット操作、ビット シフト、ローテーションなど) を試しましたが、正しいロジックを取得できませんでした。誰かがそうするために「C」でロジック/機能を教えてくれれば幸いです。別の関数プロトタイプも使用できます。

4

1 に答える 1

0

これは「ビットストリーム」と呼ばれ、低レベルのネットワーク プロトコルなどではかなり一般的です。

パラメータに妥当な上限がある場合 (たとえば 32 ビット)、次のような実装について考える必要があります。

void bitstream_append(uint32_t value, uint8_t bits);

bitsの右端のビットをvalueストリームに追加します。すでにbitstream_append_bit(bool bit);.

于 2013-01-08T14:38:20.380 に答える