Java中字节和整数之间的按位或运算

5
我将尝试在Java中对一个byte值执行按位或操作。
例如,我正在运行以下代码:
byte b = (byte)0b11111111;
int result = 0 | b;

我期望的结果应该是0b00000000 00000000 00000000 11111111,或者255。但是我收到了-1,或者0b11111111 11111111 11111111 11111111

我猜想Java在执行操作之前通过符号扩展将我的byte转换为int,我只是好奇是否有一种方法可以在不使用位掩码(0b11111111)的情况下获得我想要的结果。


1
答案是使用位掩码。在Java中,实际上没有绕过这个的方法。不使用位掩码是不可能的。 - Alexis King
1个回答

7
使用位掩码是将 byte 转换为 int 时禁用符号扩展的标准解决方案。你只需要接受这一小部分 Java 的丑陋代码即可。
int result = 0 | (b & 0xFF);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接