示例代码中的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();
    }

最佳答案

正如其他人在评论中已经提到的那样,字节掩码不会阻止符号扩展,而是将其撤消。例如:

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

关于java - 在字节数组到字符串的转换过程中防止符号扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48049672/

10-11 05:38