gpt4 book ai didi

java - 字节数组中 char 的大小

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:03 28 4
gpt4 key购买 nike

作为java doc声明:

char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).

但是当我有一个字符串(仅包含 ASCII 符号)并将其转换为字节数组时,字符串的每个符号都存储在一个字节中,这比 Java 文档所述的 16 位要少。它是如何工作的?我可以想象 java 编译器/解释器对每个字符仅使用一个字节来表示性能问题的 ASCII 符号。

此外,如果我得到一个只有 ASCII 符号和一个 UTF-16 符号的字符串并将其转换为字节数组,会发生什么情况。现在字符串的每个符号都使用 2 个字节?

最佳答案

使用 character encoding 将字符转换为字节,反之亦然。 .

字符编码决定了字符如何用字节表示。例如,ASCII是一种字符编码,每个字符使用 7 位。显然,它只能表示 128 个字符,远远少于 Java 中存在的 65,536 个字符。

其他字符编码是UTF-8和UTF-16。事实上,Java char 实际上是一个 UTF-16 字符 - 如果您直接将它转换为 int,您将获得该字符的 UTF-16 代码。

这是一个较长的字符编码教程:What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text .

如果您在String 上调用getBytes(),它将使用系统的默认字符编码将字符串中的字符转换为字节。最好使用将字符集名称作为参数的 getBytes() 版本,这样您就知道使用了什么字符集。例如:

byte[] bytes = str.getBytes("UTF-8");

关于java - 字节数组中 char 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124310/

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