首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

ASCII码的变换

2013-03-01 
ASCII码的转换public class Native2AsciiUtils {/*** prefix of ascii string of native character*/priva

ASCII码的转换

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;      } }

?

热点排行