将字符转换为unicode码:
/** * unicode转义字符 * @param ch * @param out */ public static void unicodeEscape(int ch, CharArr out) { out.write('\'); out.write('u'); //字符ch向右移动12位之后,取最后一位 out.write(HEX_CHARS[ch>>>12]); //字符ch向右移动8位之后,取最后一位 out.write(HEX_CHARS[(ch>>>8)&0xf]); //字符ch向右移动4位之后,取最后一位 out.write(HEX_CHARS[(ch>>>4)&0xf]); //取字符ch十六进制的最后一位 out.write(HEX_CHARS[ch&0xf]); }
说明:
unicode码用16进制表示,一般是4位,如小写字母'a',表示为0x0041.这里我们对字符的十进制数字采用16位运算,生成unicode字码.
代码中采用位运算符号&,0xf为16进制数, 0xf & 65 = 0xf & 0x41 = 1 .也就是取16进制数最低一位.可以采用这种方法和移位运算分别取到该字符unicode编码的四位16进制数字.
不当之处,敬请指正! 谢谢!