gpt4 book ai didi

Java:为什么 "\uFFFF"在 UTF-8 中转换为 [-17,-65,-65]?

转载 作者:行者123 更新时间:2023-11-29 03:23:23 33 4
gpt4 key购买 nike

为什么 "\uFFFF"(显然是 2 个字节长)转换为 UTF-8 中的 [-17,-65,-65] 而不是 [-1,-1]?

System.out.println(Arrays.toString("\uFFFF".getBytes(StandardCharsets.UTF_8)));

这是因为对于大于 127 的代码点,UTF-8 在每个字节中仅使用 6 位吗?

最佳答案

0xFFFF 的位模式为 11111111 11111111。按照UTF-8规则划分位,pattern变为1111 111111 111111。现在添加 UTF-8 的前缀位,模式变为 *1110*1111 *10*111111 *10*111111,即 0xEF 0xBF 0xBF,又名 239 191 191,又名 -17 -65 -65,采用二进制补码格式(这是 Java 用于有符号值的格式 - Java 没有无符号数据类型)。

关于Java:为什么 "\uFFFF"在 UTF-8 中转换为 [-17,-65,-65]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22381379/

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