2012-02-29 7 views
0

私は、単語からバイトを抽出する方法の選択について質問しています。私の言葉は現在署名されていません。これは単に32ビット(1と0)のコレクションです。私が実装している次のスクリプトはどちらも同じ結果を返します。私は、どちらを選択するのが良い選択肢だろうかと思います。2つの方が良い方法である、バイト抽出

Bytes0=(UINT8)((Word>>00 & 0x0000FF); 
Bytes1=(UINT8)(Word>>08 & 0x0000FF); 
Bytes2=(UINT8)(Word>>16 & 0x0000FF); 
Bytes3=(UINT8)(Word>>24 & 0x0000FF); 

or 
Bytes0=(UINT8)((Word>>00); 
Bytes1=(UINT8)(Word>>08); 
Bytes2=(UINT8)(Word>>16); 
Bytes3=(UINT8)(Word>>24); 

私に何かが不足していますか?

おかげ DSPガイ

答えて

0

UINT8へのキャストは最低1を除くすべてのバイトを破棄しています。したがって、最初のケースでは、上位バイトを0に変換して破棄します。 2番目にあなたは単にそれらを破棄します。第2の選択肢は、あなたがUINT8に割り当てていると仮定すれば、はるかに効率的です。

+0

あなたの答えをありがとう。もう1つの質問ですが、署名されているのではなく署名されていれば、影響はありますか? – user437777

+0

ビットが>>演算子でどのように満たされるかを変更します。しかし、これらのビットはキャストによって破棄されるので、最終結果は同じでなければなりません。 – svachalek

関連する問題