我正在尝试使用Java中的按位或byte
值。
例如,我正在运行:
byte b = (byte)0b11111111;
int result = 0 | b;
我的预期结果是0b00000000 00000000 00000000 11111111
或255
。但是,我收到了-1
或0b11111111 11111111 11111111 11111111
。
我假设Java在执行操作之前将byte
转换为int
通过符号扩展名,我很好奇是否有办法在不使用的情况下获得所需的结果位掩码(0b11111111
)。
答案 0 :(得分:7)
使用位掩码是在将byte
转换为int
时禁用符号扩展的标准解决方案。你只需要接受这片Java丑陋。
int result = 0 | (b & 0xFF);