0

我有一个字节 00111101。我想将它分成两部分,如 0011 1101 并创建两个新字节 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将此行为指定为二进制数字提升规则的一部分:

加宽原语转换(第 5.1.2 节)适用于转换以下规则指定的一个或两个操作数:

如果任一操作数是 double 类型,则另一个操作数将转换为 double。

否则,如果任一操作数的类型为浮点型,则另一个将转换为浮点型。

否则,如果任一操作数是 long 类型,则另一个将转换为 long。

否则,两个操作数都转换为 int 类型。

于 2013-05-15T16:27:49.173 回答