次のような unsigned char バイト配列があります。
unsigned char[20] = {0xff, 0x1a, 0x70, 0xa9, ...}
ここで、この配列の x 連続ビットに対して計算を実行したいと思います ( x > 8
; などを使用x = 15
)。特に、15 ビットごとに多数決を実行して、1 ビットを返したいと考えています。その後、返された単一ビットは、再び unsigned char バイトに変換されます。
私はすでに多数投票アルゴリズムを実装しています。また、問題全体に対して単純なアルゴリズムを実装しました。これは次のように機能します。
- バイト配列をビット配列に変換します (0 と 1 を保持する unsigned char[] も)
- ビット配列をループし、すべての一連の x ビットを多数決関数に渡します。
- 多数決結果もビット配列に集める (unsigned char[])
- このビット配列をループし、ビットごとの操作を使用して、一連の 8 ビットごとにバイトを構築します。
私には、これは直感的であると同時に扱いにくいように思えます。
最適化の可能性はありますか、それともより洗練されたアルゴリズムを提供できますか?
よろしく、P.