我有一个字节00111101.我想把它分成两部分,如0011 1101,并创建两个新的字节00000011和00001101.我怎么能用Java做?
我的代码是:
byte b; //b has a particular value
byte result1= (b>>4) && 0x0f;
byte result2= b & 0x0f;
Run Code Online (Sandbox Code Playgroud)
此代码给出了以下错误:
cannot convert from int to byte.
Run Code Online (Sandbox Code Playgroud)
你只需要添加一个演员:
byte result1= (byte) ((b>>4) && 0x0f);
byte result2= (byte) (b & 0x0f);
Run Code Online (Sandbox Code Playgroud)
对小于的整数类型的算术运算的结果int是隐式提升的int,所以你必须将其强制转换为byte.
JLS 5.6.2将此行为指定为二进制数字提升规则的一部分:
应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:
如果任一操作数的类型为double,则另一个操作数转换为double.
否则,如果任一操作数的类型为float,则另一个操作数转换为float.
否则,如果任一操作数的类型为long,则另一个操作数转换为long.
否则,两个操作数都将转换为int类型.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |