5

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

例如,我正在运行:

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

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

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

4

1 回答 1

8

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

int result = 0 | (b & 0xFF);
于 2015-01-28T22:16:29.930 回答