Java Byte 和 Int 之间的按位或
Java Bitwise Or Between Byte and Int
我正在尝试按位或对 Java 中的 byte
值执行操作。
比如我是运行:
byte b = (byte)0b11111111;
int result = 0 | b;
我对此的预期结果是 0b00000000 00000000 00000000 11111111
或 255
。但是,我收到 -1
,或 0b11111111 11111111 11111111 11111111
。
我假设 Java 在执行操作之前通过符号扩展将我的 byte
转换为 int
,我只是好奇是否有办法让我的不使用位掩码 (0b11111111
) 的期望结果。
使用位掩码是在将 byte
转换为 int
时禁用符号扩展的标准解决方案。你只需要接受这片 Java 丑陋。
int result = 0 | (b & 0xFF);
我正在尝试按位或对 Java 中的 byte
值执行操作。
比如我是运行:
byte b = (byte)0b11111111;
int result = 0 | b;
我对此的预期结果是 0b00000000 00000000 00000000 11111111
或 255
。但是,我收到 -1
,或 0b11111111 11111111 11111111 11111111
。
我假设 Java 在执行操作之前通过符号扩展将我的 byte
转换为 int
,我只是好奇是否有办法让我的不使用位掩码 (0b11111111
) 的期望结果。
使用位掩码是在将 byte
转换为 int
时禁用符号扩展的标准解决方案。你只需要接受这片 Java 丑陋。
int result = 0 | (b & 0xFF);