Java 在字节数组到字符串转换期间防止符号扩展

Java 在字节数组到字符串转换期间防止符号扩展,java,string,byte,data-conversion,Java,String,Byte,Data Conversion,示例代码中的BYTEMASK标志使值在转换为int时不会被符号扩展。该标志如何防止转换形式被符号扩展 private final static int BYTEMASK = 0xFF; private static String byteArrayToDecimalString(byte[] bArray) { StringBuilder rtn = new StringBuilder(); for(byte b : bArray) r

示例代码中的BYTEMASK标志使值在转换为int时不会被符号扩展。该标志如何防止转换形式被符号扩展

private final static int BYTEMASK = 0xFF;

private static String byteArrayToDecimalString(byte[] bArray) {
        StringBuilder rtn = new StringBuilder();
        for(byte b : bArray) 
            rtn.append(b & BYTEMASK).append(" ");
        return rtn.toString();
    }

正如其他人在评论中已经提到的那样,bytemask并没有阻止符号扩展,而是将其撤消。例如:

0x80 -- sign extend -> 0xffffff80 -- mask with 0xff -> 0x00000080

该值是符号扩展的。但是掩码会删除符号扩展。如何删除符号扩展?这是因为当二进制与0 AND时,符号位(1)变为0。因为1&0等于0。感谢您的反馈。我正在调试程序中单步执行代码,以了解该过程。