byte[]跟String之间转换出现比较有趣的有关问题
byte[]跟String之间转换出现比较有趣的问题
------解决方案--------------------
这个是和编码方式有关的 uft编码方式
会把你hard的4个byte 编码
public static String uint2buf(int ui) {
ui = 869015016; //0x33CC1DE8
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
bytes[i] = (byte)(ui & 0xFF);
if (i < 3)
ui = ui >> 8;
}
//bytes == {0xE8, 0x1D, 0xCC, 0x33}
//取出来的bytes值是没有错的
String rs = new String(bytes, 0, 4);
byte[] buf = rs.getBytes();
//buf == {0xEF, 0xBF, 0xBD, 0x1D, 0xEF, 0xBF, 0xBD, 0x33}
//重新再取出来之后, 为什么bytes跟buf这2个数组里的内容不一样?
String rs2 = new String(buf, 0, buf.length);
boolean b = rs.equals(rs2);
//使用不同的byte[]生成的String
//这里竟然b == true!!!!!!!!!!!!
if(b)
return rs;
return rs2;
}
------解决方案--------------------
这个是和编码方式有关的 uft编码方式
会把你hard的4个byte 编码