二进制Java按位或字节与整数之间
我试图对Java中的byte
值执行按位or
例如,我正在运行:
byte b = (byte)0b11111111;
int result = 0 | b;
我的预期结果是0b00000000 00000000 00000000 11111111
,或者255
。但是,我正在接收-1
或0b11111111 11111111 11111111 11111111
我假设Java在执行操作之前通过符号扩展将我的byte
转换为int
,我只是想知道是否有一种方法可以在不使用位掩码(0b11111111
)的情况下获得我想要的结果
# 1 楼答案
在将
byte
转换为int
时,使用位掩码是禁用符号扩展的标准解决方案。你只需要接受Java的丑陋