我最近发现您通过以下方式将字符串转换为字节数组:
String S = "ab";
byte arr[] = S.getBytes();
现在,我尝试使用 String
"\u9999"
,答案是 [63]
。我认为这将是 9999 (mod 128) = 15 这实际上是我们执行 byte b = 9999
时得到的结果。 63背后的原因是什么? 最佳答案
对于 Unicode 字符,您可以在对 getBytes
的调用中指定编码:
byte arr[] = S.getBytes("UTF8");
至于为什么你会得到
63
结果,对 getBytes
的调用不带参数使用你平台的默认编码。字符 \u9999
无法在您的默认编码中正确表示,因此会变成 ?
,在 ASCII 中具有十进制值 63
。