在字节数组到字符串转换期间防止符号扩展
Prevent sign-extension during byte array to string conversion
示例代码中的 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
示例代码中的 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