我将字节数组转换bytes
为字符串。但是在计算字符串中的字节时,我没有得到正确的答案。的大小bytes
是 125,但我得到 129。代码如下:
String s2= null;
try {
System.out.println(bytes.length); //This gives 125 as answer
s2 = new String(bytes,"UTF-8");
System.out.println(s2.getBytes("UTF-8").length); //But this gives 129 instead of 125
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
上面的代码有什么问题?
编辑:根据下面给出的答案,bytes
以错误的格式编码。如果初始化bytes
完成如下所示,那么如何在bytes
不丢失(或获得)任何额外数据的情况下转换为字符串?
byte[] bytes=new byte[125];
for (int i = 0; i < 125; i++) {
bytes[bytes.length - i / 8 - 1] |= 1 << (i % 8);
}
更新:如果我删除上面代码中的移位操作,它会给出正确的输出。换档有什么问题?