/*

* Copyright 2012-2013 The Haohui Network Corporation

*/

package com.haohui.common.utils;

/**

* Java Native和Ascii转换代码

*

* @project common-utils

* @author cevencheng

* @create 2012-11-7 下午4:16:57

*/

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;

}

}

java ask to_Java native和ASCII 互转工具Native2AsciiUtils.java下载相关推荐

  1. native与ascii互转

    package org.edujks.schoolapp.schoolbasedresearch.schoolsubject.action;public class DecodeUtil {/*** ...

  2. java中的native关键字有什么作用?(java本地方法)

    转自: http://zhidao.baidu.com/link?url=Xu94DBMxXz3sJyCrG7G1sCmXoHuyuYx4DMG1x7UqYL7FhfFnqF7-Z9nxIQUpntP ...

  3. java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

    原文:仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java 源代码下载地址:http://www.zuidaima.com/share/1550463378934784.htm ...

  4. java htmldecoder_HTMLDecoder——开头的HTML编码的解码工具类(java)

    import java.util.Arrays; /** * * @author xiehui 2019/8/30 * */ public class HTMLDecoder { // 开头的编码换转 ...

  5. java中文姓名排序pinyin4j-2.5.0,pinyin4j工具类--Java 中文字符操作:排序、拼音

    直接上代码吧!将汉子转化为拼音,用到"pinyin4j-2.5.0.jar". 1.ChinaWord.java : 汉子排序 /** * @包名 :com.andy.汉字排序 * ...

  6. python ascii函数二进制_python模块介绍- binascii:二进制和ASCII互转以及其他进制转换...

    20.1 binascii:二进制和ASCII互转 作用:二进制和ASCII互相转换. Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法. ...

  7. native关键字(本地方法)、 java调用so动态链接库

    Java native关键字 一. 什么是Native Method    简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个j ...

  8. java中的Native方法

    由于Native方法最近经常碰到,好奇之下便找到了这篇博客,内容还是相当好理解的,下面即是正文部分: 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调 ...

  9. Java关键字(二)——native

    本篇博客我们将介绍Java中的一个关键字--native. native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法.hashCode()方法 ...

最新文章

  1. MongoDB如何一次插入多条json数据--转
  2. 全球及中国偶联单克隆抗体行业深度调研及项目风险评估报告2021-2027年
  3. 中南林业科技大学的计算机研究生分数线,2019中南林业科技大学研究生分数线汇总(含2016-2019历年复试)...
  4. 黑科技(next_permutation和prev_permutation)
  5. 第二节:Css重写样式
  6. dev c++ 代码补全_学习干货——玩转DEV—C++
  7. CentOS7.X安装Redis-4.0.8以及Redis集群搭建
  8. (一)深度伪造的视频人脸传输
  9. 豆瓣小组html模板,用前端的方式打开豆瓣租房小组
  10. Pytorch搭建网络模型
  11. 我是如何出版一本书的?
  12. 怎么查看计算机mac地址,怎么查电脑的mac地址?电脑mac地址查询方法
  13. 【免填邀请码】让邀请裂变活动事半功倍
  14. matlab的特殊字符(上下标和希腊字母等)
  15. 26 岁年薪百万!华为最新“天才少年”曝光,学霸兼 B 站 UP 主,还爱跳街舞
  16. 【Linux环境搭建】十二、Linux(CentOS7) 时序数据库InfluxDB及Influx-proxy安装配置
  17. 网络基础--搭建一个简单的网络
  18. 什么软件可以将win窗口进行置顶_【玩转YOGA】第四期:像平板一样使用平板——触屏手势软件GestureSign...
  19. 爬虫教程:如何批量采集知乎
  20. 面试题之如何实现一个深拷贝

热门文章

  1. Android修改项目包名
  2. neditor 自定义工具栏配置
  3. jmeter模拟http请求/发送gzip数据
  4. Jmeter日志输出和日志级别设置
  5. java spring注入 静态方法_java相关:spring为类的静态属性实现注入实例方法
  6. django本地安装mysql_django使用mysql(本地环境下)_MySQL
  7. 从0实现三层神经网络
  8. 服务器lunix系统开启多用户,Ubuntu 服务器设置软件多用户访问
  9. 【C语言进阶深度学习记录】二十二 指针的本质分析
  10. C++之类的静态成员变量和静态成员函数