将一个字节分成几部分

时间:2013-05-15 16:27:12

标签: java byte

我有一个字节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.

1 个答案:

答案 0 :(得分:5)

你只需要添加一个演员:

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

对小于int的整数类型的算术运算结果隐式提升为int,因此您必须将其强制转换为byte

JLS 5.6.2将此行为指定为二进制数字促销规则的一部分:

  

应用扩展基元转换(第5.1.2节)来转换以下规则指定的一个或两个操作数:

     

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

     

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

     

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

     

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