如果我有一些二进制数据D并将其转换为字符串S.我期望将它转换回二进制我会得到D.但它是错误的。将二进制数据转换为字符串
public class A {
public static void main(String[] args) throws IOException {
final byte[] bytes = new byte[]{-114, 104, -35};// In hex: 8E 68 DD
System.out.println(bytes.length); //prints 3
System.out.println(new String(bytes, "UTF-8").getBytes("UTF-8").length); //prints 7
}
}
为什么会发生这种情况?
你试图强制任意的二进制数据到一个字符串?为什么? – Jesper 2012-02-04 20:22:00
(如果*由于某种原因必须隐藏字符串中的二进制数,则需要使用提供字节和字符之间的一对一映射的编码; ISO-8859-1将是明显的选择UTF-8的字节序列不代表有效字符。) – bobince 2012-02-05 09:29:21