有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

二进制Java按位或字节与整数之间

我试图对Java中的byte值执行按位or

例如,我正在运行:

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

我的预期结果是0b00000000 00000000 00000000 11111111,或者255。但是,我正在接收-10b11111111 11111111 11111111 11111111

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


共 (1) 个答案

  1. # 1 楼答案

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

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