我正在尝试从 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 字节值表示从 0
到 2^16 - 1 == 65535
的值范围,因此如果您将该范围外的任何数字转换为 2 字节值并返回,您将丢失数据。
关于java - 将 int 转换为 char 然后再转换回 int - 并不总是给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094277/