试图字节转换为字符串在Java中,当我有一个问题,有这样的代码:在Java中将字节转换为字符串时发生了什么?
byte[] bytes = {1, 2, -3};
byte[] transferred = new String(bytes, Charsets.UTF_8).getBytes(Charsets.UTF_8);
和原始字节不一样的传输的字节,分别
[1, 2, -3]
[1, 2, -17, -65, -67]
我曾经认为这是由于UTF-8字符集映射为负“-3”。所以我把它改成“-32”。但传输的阵列保持不变!
[1, 2, -32]
[1, 2, -17, -65, -67]
所以我强烈地想知道我什么时候叫新的字符串(字节):)
你从哪里拿出1,2,-3?那甚至是有效的UTF-8? – Necreaux
请记住,您正在查看根据Java对所有内容进行签名的字节的数字表示形式。打印为-3的值实际上是8位值0xFD或0b11111101。 –
由于字节0xFD对应于阿拉伯语表示形式代码点的第一个字节,因此它可能会将其中一个扩展为正确的UTF-8序列。大多数阿拉伯语演示文稿表单都以UTF-8格式解析为3个字节。 –