18

2 バイトを使用して 32768 を表現しようとしています。上位バイトについては、下位バイトと同じ値を使用して解釈が異なるのでしょうか、それとも実際の値を入力しますか? では、32678 0 または 256 0 のようなものを入れますか? それともどちらでもない?どんな助けでも大歓迎です。

4

6 に答える 6

30

16 進数では、番号は 0x8000 で、これは 0x80 と 0x00 です。入力から下位バイトを取得するには を使用low=input & 0xffし、上位バイトを取得するには を使用しますhigh=(input>>8) & 0xff

次のように、下位バイと上位バイから入力を取得しますinput=low | (high<<8)

使用する整数型がこれらの数値を格納するのに十分な大きさであることを確認してください。16 ビット システムでは、unsigned int/shortまたはsigned/unsigned longは十分な大きさにする必要があります。

于 2011-05-22T20:37:40.727 に答える
5

バイトには、0から255までの値のみを含めることができます。32768は0x8000であるため、上位バイトは128で、下位バイトは0です。

于 2011-05-22T20:29:14.960 に答える
2

この機能を試してみてください。Hi_Byte と Lo_Byte を関数に渡すと、値が Word として返されます。

WORD MAKE_WORD( const BYTE Byte_hi, const BYTE Byte_lo)
{
     return   (( Byte_hi << 8  ) | Byte_lo & 0x00FF );
}
于 2016-05-07T13:38:44.590 に答える
0

32768は0x8000であるため、上位バイトに0x80(128)を配置し、下位バイトに0を配置します。

もちろん、これは符号なしの値を想定しています。32768は、実際には符号付き16ビット値の有効な値ではありません。

于 2011-05-22T20:29:57.317 に答える
-1

16進数の32768は、リトルエンディアンプラットフォームでは0080です。「上位」(この場合は2番目)バイトには128が含まれ、「下位」バイトには0が含まれます。

于 2011-05-22T20:31:44.897 に答える