3

UDP プロトコル経由でいくつかのバイトを送信する必要があります。開始シーケンスは 0xFF、0xFF、0xFF、0xFF、0xFF、0xFF です。

私がこのように定義すると:

byte [] begin = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; 

それらをバイト型にキャストする必要があるというエラーが表示されます。私の知る限り、0xFFはバイトタイプを超えていないので、何が問題なのですか?

これを書くとうまくいきます:

byte [] begin = {(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF};
4

2 に答える 2

11

私の知る限り、0xFFはバイトタイプを超えていないので、何が問題なのですか?

実際そうです。バイトは Java で署名されるため、範囲は -0x80 から 0x7f (両端を含む) です。

byte(タイプ署名されているという事実は首の痛みですが、それでは...)

于 2012-06-28T06:38:17.470 に答える
1

Javaのリテラル数は、intとしてコンパイルされます。ここのような状況で宣言されたとしても、バイトは期待値です。キャストは、そのリテラルintを実際にバイトに変換するものです。

于 2012-06-28T07:03:54.893 に答える