gpt4 book ai didi

java - 转换 String -> byte[] -> String,而不是恒等映射

转载 作者:行者123 更新时间:2023-12-01 11:46:04 31 4
gpt4 key购买 nike

当我将字符串转换为字节数组并返回字符串时,我没有得到开始时的结果。这是为什么?

String s1 = "" + (char)266;
String s2 = new String(s1.getBytes());
System.out.println(s1 + "|" + s2 + "|");
System.out.println((int)s1.charAt(0) + "|" + (int)s2.charAt(0));

输出:

?|?|
266 63

最佳答案

您似乎缺乏对 charbyte 之间关系的基本理解。

它们不可互换

当你有文本时,你就有了一个 Unicode 代码点流。恰好在 Java 中,char 就是用于此目的。但对于解码和编码的过程来说,它们很可能是信鸽。

所以,你有文本,也有字节。您需要做的是能够将此文本(也称为信鸽序列(或 char,无所谓))转换为字节(即编码) ,然后字节返回文本(即解码)。在 Java 中,这两种操作都可以通过一个称为 Charset 的类来实现;至于在幕后执行这些操作的类,它们是 CharsetEncoderCharsetDecoder

因此你的程序无法运行。另外,当您使用:

someString.getBytes()

您使用 JRE/OS 组合的默认字符集。 不要这样做。编码或解码时始终指定字符集。

关于java - 转换 String -> byte[] -> String,而不是恒等映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119789/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com