我已将包含外来字符“昼”的字符串转换为字节数组。 字节数组可以存储-128到127之间的值,因此对应的值已存储为3个字节 ---> -26,-103,-99。
这是转换代码:
String str = "晝";
byte[] b = str.getBytes();
for(byte bt : b)
System.out.println(bt);
String str1 = new String(b);
System.out.println(str1);
您能否澄清一下外来字符的这 3 个字节是如何计算的
最佳答案
昼为U+665D。看起来你转换它的时候,你把它转换成了UTF-8。 UTF-8 是 Unicode 字符的可变长度编码。 [U+0800, U+FFFF] 中的字符转换为 3 个字节。
根据this converter ,U+665D在UTF-8中是E6 99 9D(十六进制是,十进制是230 153 157,稍后会需要)。因为一个字节是-128到127,所以大于127的值会显示为减去256的数字,所以以字节来说,230 153 157就是230-256 153-256 157-256,或者-26 -103 -99,也就是你看到了。
关于java - 来自字符串的字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478437/