【发布时间】:2018-01-01 12:30:45
【问题描述】:
示例代码中的 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();
}
【问题讨论】:
-
值是符号扩展的。但随后掩码删除了符号扩展。
-
如何删除符号扩展?
-
它确实是因为符号位 (1) 与 0 进行二进制与运算时变为 0。因为 1 & 0 为 0。
标签: java string byte data-conversion