最新帖子 精华区 社区服务 会员列表 统计排行
主题 : Native2Ascii和Ascii2Native的Java实现
ceshi123 离线
级别: 管理员
宣传大使奖 特殊贡献奖 灌水天才奖
显示用户信息 
0  发表于: 2010-08-02 20:05

Native2Ascii和Ascii2Native的Java实现

购买流程:注册论坛账号------->在线充值购买论坛交易币------->下载毕业设计将直接扣除交易币
  Java代码

  /**

  * native2ascii.exe Java code implementation.

  *

  * @author

  * @version 1.0

  */

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

  }

  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;

  }

  }

快速回复 顶端
内容
HTML 代码不可用
使用签名
Wind Code自动转换

验证问题:本站域名是什么?答案:cccbbs.net  正确答案:cccbbs.net
按"Ctrl+Enter"直接提交