StringUtils.toCodePoint(str)方法分析
根据我自己的实际操作分析该方法是将str中各个字符的十进制unicode码 并放在int[]数组中.下面是实际代码操作:
public static void main(String[] args) {
int[] asds = StringUtils.toCodePoints("a汉字");
for (int asd : asds) {
System.err.println("10进制字符" + asd);
String x = Integer.toHexString(asd);
System.err.println("16进制字符" + x);
if (x.length() <= 2) {
x = "\\u00" + x;
} else {
x = "\\u" + x;
}
System.err.println("unicode码" + x);
System.err.println("===");
}
System.err.println("unicode转汉字:" + new String(asds, 0, 3));
}
输出结果:
10进制字符97
16进制字符61
unicode码\u0061
===
10进制字符27721
16进制字符6c49
unicode码\u6c49
===
10进制字符23383
16进制字符5b57
unicode码\u5b57
===
unicode转汉字:a汉字
- 说明:该方法直接返回的int型数组包含了三个字符的十进制字符,
toHexString(int i)
将十进制整型转为十六进制整型6c49
,将十六进制加上\u
再用 String的构造方法(int[],offset,count),该方法传入一个十进制unicode编码,offset
表示数组的起始位置,count
表示从offset起始位置到结束位置的长度; - 输出的unicode码经过自己的实验:
感觉说的不是很对,只是凭借代码没有出错而作出的判断,欢迎批评指正!