Unicode是Java采用的编码方式,那么单个的字符如何转化为Unicode呢?
首先我们要清楚Unicode的编码原理。
Unicode是4位16进制编码,以/u开头,如'a'的编码是/u0061。现在我们从键盘接收到的字符是char类型,2个字节,即16位2进制。要将16位2进制转化为4位16进制,我可以将16位二进制分割为高8位与低8位进行处理,代码如下:
import java.util.*;
public class TransToUnicode {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
char c = s.charAt(0);
StringBuffer sb = new StringBuffer();
sb.append("\\u");//添加/u标识符
int high = c >>> 8;//取高8位,无符号右移,无论正负,高位补0。
String s2 = Integer.toHexString(high);//将高8位转化为16进制
if(s2.length() == 1){//如果高8位转化为16进制只有1位则补0
sb.append("0");
}
sb.append(s2);
int low = c & (0xFF);//取低8位
s2 = Integer.toHexString(low);
if(s2.length() == 1){
sb.append(0);
}
sb.append(s2);
System.out.println(sb.toString());
}
}