java - 将 int 转换为 char 然后再转换回 int - 并不总是给出相同的结果

标签 java unicode char int

我正在尝试从 int 值 > 0xFFFF 中获取 char。但相反,我总是得到相同的 char 值,当转换为 int 时,打印值 65535 (0xFFFF)。

我不明白为什么它为 unicode > 0xFFFF 生成符号。

int hex = 0x10FFFF;
char c = (char)hex;
System.out.println((int)c);

我预计输出为 0x10FFFF。相反,输出返回为 65535

最佳答案

这是因为,int 是 4 个字节,而 char 只有 2 个字节。因此,您不能像在 int 中那样在 char 中表示所有值。使用标准无符号整数表示,您只能用 2 字节值表示从 02^16 - 1 == 65535 的值范围,因此如果您将该范围外的任何数字转换为 2 字节值并返回,您将丢失数据。

关于java - 将 int 转换为 char 然后再转换回 int - 并不总是给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094277/

相关文章:

java - 二叉搜索树中的元素被自动删除

java - 在 Fragment 内调用 getActivity() 返回 null

java - Swagger 注释以获取授权按钮

c - 格式为\Unnnnnnnn 的 Unicode 代码点

objective-c - 如何将 NSString 转换为对象 C 中的 char[] 数组

java - Jasper Reports 不组合 DataBean

string - 根据 unicode 对字符串进行排序

python - Unicode 对象在 Python 中是如何表示的?

rust - 使用 trim_end_matches 作为闭包函数 : expected signature . 类型不匹配 .. 找到 "for<' r> 的签名 ..."

将十六进制字符串 (char []) 转换为 int?