gpt4 book ai didi

java - UTF-16 字符串中的字节数

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:23 25 4
gpt4 key购买 nike

为什么 UTF-16 的 2 个字符的字符串在内存中只占用 6 个字节,而 UTF-16 的 1 个字符的字符串占用 4 个字节?

这是一个用 java 编写的 SSCCE 来演示这种行为:

public class UTF16Test{
public static void main(String[] args) throws Exception {
System.out.println("A".getBytes("UTF-16").length);
System.out.println("AB".getBytes("UTF-16").length);
}
}

输出:

4
6

最佳答案

您必须考虑 2 字节的 Byte-Order-Marks用于 UTF-16?

您的前 2 个字节将是:FE FFFF FE,具体取决于您使用的是大端还是小端机器。你应该检查...

我做到了,它是 [-2, -1, 0, 65, 0, 66]

您还应该考虑到字符串值不会占用内存中的额外空间,只有当字符串被编码为 byte[] 时才会添加字节顺序标记....字符串 AB 将在内存中使用 char[2] 直到它被字节编码为 byte[6]

关于java - UTF-16 字符串中的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151274/

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