0

バイト 00111101 があります。これを 0011 1101 のように 2 つの部分に分割し、2 つの新しいバイト 00000011 と 00001101 を作成したいと考えています。Java でどのようにすればよいですか?

私のコードは次のとおりです。

byte b; //b has a particular value
byte result1= (b>>4) && 0x0f;
byte result2= b & 0x0f;

このコードは私に次のエラーを与えています:

cannot convert from int to byte.
4

1 に答える 1

5

キャストを追加するだけです:

byte result1= (byte) ((b>>4) && 0x0f); 
byte result2= (byte) (b & 0x0f);

より小さい整数型に対する算術演算の結果は、int暗黙的に に昇格されるintため、 にキャストし直す必要がありますbyte

JLS 5.6.2では、この動作を 2 進数の昇格ルールの一部として指定しています。

拡張プリミティブ変換 (§5.1.2) は、次の規則で指定されているように、オペランドの一方または両方を変換するために適用されます。

いずれかのオペランドが double 型の場合、もう一方は double に変換されます。

それ以外の場合、いずれかのオペランドが float 型の場合、もう一方は float に変換されます。

それ以外の場合、いずれかのオペランドが long 型の場合、もう一方は long に変換されます。

それ以外の場合、両方のオペランドが int 型に変換されます。

于 2013-05-15T16:27:49.173 に答える