Java Byte 和 Int 之间的按位或

Java Bitwise Or Between Byte and Int

我正在尝试按位或对 Java 中的 byte 值执行操作。

比如我是运行:

byte b = (byte)0b11111111;
int result = 0 | b;

我对此的预期结果是 0b00000000 00000000 00000000 11111111255。但是,我收到 -1,或 0b11111111 11111111 11111111 11111111

我假设 Java 在执行操作之前通过符号扩展将我的 byte 转换为 int,我只是好奇是否有办法让我的不使用位掩码 (0b11111111) 的期望结果。

使用位掩码是在将 byte 转换为 int 时禁用符号扩展的标准解决方案。你只需要接受这片 Java 丑陋。

int result = 0 | (b & 0xFF);