decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);通过在这个表达式中添加“& 0xff”来防止“int”提升。
时间: 2024-03-30 20:37:09 浏览: 64
读取二进制文件,byte[]转int型
正确的表达式应该是 decodedData[encodedIndex++] = (byte) ((b3 << 6 | b4) & 0xff);
在 Java 中,当一个 byte 类型的值和一个 int 类型的值进行运算时,byte 类型的值会被提升为 int 类型,并且在进行位运算时可能会导致结果超出 byte 类型的取值范围。因此,为了防止 int 提升并确保结果不超出 byte 类型的取值范围,需要在运算结果后添加 "& 0xff" 这样的操作,将结果强制转换为 byte 类型并截取低八位。
阅读全文