art*_*1go 3 java unicode binary byte char
为什么以下两个结果不同?
bsh % System.out.println((byte)'\u0080'); -128 bsh % System.out.println("\u0080".getBytes()[0]); 63
谢谢你的回答.
Mic*_*rdt 5
(byte)'\u0080'只取代码点的数值,它不适合a byte,因此受到一个缩小的原语转换,它会丢弃不适合该字节的位,并且由于设置了最高位,产生负数数.
(byte)'\u0080'
byte
"\u0080".getBytes()[0]根据您的平台默认编码将字符转换为字节(有一个getBytes()允许您指定编码的重载方法).看起来您的平台默认编码不能代表代码点U + 0080,并将其替换为"?" (代码点U + 003F,十进制值63).
"\u0080".getBytes()[0]
getBytes()
归档时间:
15 年,8 月 前
查看次数:
1335 次
最近记录: