public class Native2AsciiUtils { /** * prefix of ascii string of native character */ private static String PREFIX = "\\u"; /** * Native to ascii string. It's same as execut native2ascii.exe. * @param str native string * @return ascii string */ public static String native2Ascii(String str) { char[] chars = str.toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < chars.length; i++) { sb.append(char2Ascii(chars[i])); } return sb.toString(); } /** * Native character to ascii string. * @param c native character * @return ascii string */ private static String char2Ascii(char c) { if (c > 255) { StringBuilder sb = new StringBuilder(); sb.append(PREFIX); int code = (c >> 8); String tmp = Integer.toHexString(code); if (tmp.length() == 1) { sb.append("0"); } sb.append(tmp); code = (c & 0xFF); tmp = Integer.toHexString(code); if (tmp.length() == 1) { sb.append("0"); } sb.append(tmp); return sb.toString(); } else { return Character.toString(c); } } /** * Ascii to native string. It's same as execut native2ascii.exe -reverse. * @param str ascii string * @return native string */ public static String ascii2Native(String str) { StringBuilder sb = new StringBuilder(); int begin = 0; int index = str.indexOf(PREFIX); while (index != -1) { sb.append(str.substring(begin, index)); sb.append(ascii2Char(str.substring(index, index + 6))); begin = index + 6; index = str.indexOf(PREFIX, begin); } sb.append(str.substring(begin)); return sb.toString(); } /** * Ascii to native character. * @param str ascii string * @return native character */ private static char ascii2Char(String str) { if (str.length() != 6) { throw new IllegalArgumentException( "Ascii string of a native character must be 6 character."); } if (!PREFIX.equals(str.substring(0, 2))) { throw new IllegalArgumentException( "Ascii string of a native character must start with \"\\u\"."); } String tmp = str.substring(2, 4); int code = Integer.parseInt(tmp, 16) << 8; tmp = str.substring(4, 6); code += Integer.parseInt(tmp, 16); return (char) code; } }
最近下载更多
abdkfksdkf LV15
2023年3月2日
gao123qq LV21
2021年5月7日
拾光979 LV11
2020年2月25日
lixiaominghahaha LV10
2019年4月17日
idcomcn2003 LV5
2019年4月8日
cao1992 LV24
2019年1月21日
17608417105 LV9
2018年9月10日
2303801086 LV1
2018年7月9日
1324488732 LV27
2018年7月1日
lhdznb LV16
2018年5月5日
最近浏览更多
2206371875 LV7
2023年11月18日
1358849392 LV20
2023年10月10日
xianyu091012 LV2
2023年7月19日
2017143155 LV12
2023年6月27日
abdkfksdkf LV15
2023年3月2日
12cq345 LV6
2023年2月24日
zdmlychee LV2
2022年11月22日
sink122406 LV12
2022年7月11日
mq13947193109 LV19
2022年7月5日
wangdengzhe LV7
2022年4月6日