2013-06-11 23 views
5

デルファイを使用して.txtファイルからバイト単位でデータを取得しています。各バイトごとに、そのバイトの先頭と末尾のビットを入れ替える必要があります。私は何時間もGoogleを検索してきましたが、デルファイのバイト変数内のビットを操作するための参照は見つかりません。何か案は?Delphiのバイト変数の操作ビット

+0

最も簡単な方法は、ルックアップテーブルを使用することです –

答えて

10
b := (b and $7E) or (b shr 7) or (b shl 7); 

まず、中央の6ビットを保持してから、レジスタシフト操作でMSBビットとLSBビットを交換します。

デルファイのビット操作は楽しいです。 多くのオプションがありますが、これは簡単な解決策です。 デビッドは、高速化が可能なLUTソリューションを提案しています。

全体のビットをビット反射することに関する興味深い同様の質問がありました。How can I bit-reflect a byte in Delphi?を参照してください。

+0

これは*解決策です。第1オペランドはMSBとLSBであり、第2オペランドは初期MSB(現在LSB位置)であり、第3オペランドは初期LSB(MSB位置にある)です。もちろん、MSB-LSBスワップでは 'または'の結果は 'b'です。 –

+0

また、ルックアップテーブルを使用する場合は、上記の1ライナーを使用してテーブルを生成することもできます。 –

+0

LU RDによる完璧な答え! Andreasの説明をありがとう! – HHH