native2ascii java_Native2Ascii和Ascii2Native的Java实现

native2ascii java_Native2Ascii和Ascii2Native的Java实现packageutil;/***native2ascii.exeJavacodeimplementation.**@author*@version1.0*/publicclassNative2AsciiUtils{/***prefixofasciistringofnativecharacter*/privatestaticStringPREFIX=”\…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

package util;

/**

* 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[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;

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197604.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 高通MSM8953 LK阶段配置使用I2C8[通俗易懂]

    高通MSM8953 LK阶段配置使用I2C8[通俗易懂]项目场景: 因为项目需要,需要在高通MSM8953平台的LK阶段使用I2C8设备。但是MSM8953平台LK阶段并没有配置好I2C8接口,因此调试I2C8成为当务之急。本文只介绍在LK阶段配置使用I2C5的方法。调试需要:1、文档:BAMLow-SpeedPeripherals(BLSP)UserGuide查看文档,有I2C介绍如下:I2c3对应的物理地址为0x78B7000,中断IRQ:97,时钟信号clk:clk_gcc_blsp1_qup3_i2c_apps_clk

    2022年10月19日
  • 解决win10状态栏的搜索框无法搜索本地应用或无反应

    解决win10状态栏的搜索框无法搜索本地应用或无反应今天突然出现的问题,在状态栏左下角的搜索框搜索OneNote没有任何反应,对,就是这个地方。最后在另一篇博客上找到了答案,那篇博客也是在知乎找到的答案,虽然是用被人的方法解决了问题,但我还是打算记下来;1、首先,打开管理员命令窗口,win+x,可以看到弹出一个窗口,打开windowsPowershell(管理员)如图2,输入下面这行英文startpowershell然…

  • sql server 安装_安装wsl

    sql server 安装_安装wslPython2.7.7源码安装注意:1.同时安装相对应的numpy,pip,easy_install(注意不是系统自带的python2.6的pip或者easy_install)。2.原来的python不能删除,否则yum无法使用3.安装结束后测试yum能否使用教程链接:https://github.com/0xdata/h2o/wiki/Installing-p

    2022年10月26日
  • code blocks使用方法总结「建议收藏」

    code blocks使用方法总结「建议收藏」下载和安装:官网地址:http://www.codeblocks.org/downloadstips:同一个版本有多个安装文件,官网上有对于各个文件的简要介绍。最好选择 mingw-se

  • CreateThread WaitForMultipleObjects[通俗易懂]

    CreateThread WaitForMultipleObjects[通俗易懂]//最简单的创建多线程实例#include#include//子线程函数DWORDWINAPIThreadFun(LPVOIDpM){printf(“子线程的线程ID号为:%d\n子线程输出HelloWorld\n”,GetCurrentThreadId());return0;}//主函数,所谓主函数其实就是主线程执行的函数。intmain

  • spring boot框架搭建_springboot工作原理

    spring boot框架搭建_springboot工作原理公司大部分的应用程序都使用springboot开发,作为测试人员,学习了解该框架也势在必行。此外作为想成长为测试开发的同学来说,使用springboot开发后端服务也是一项基本的技能。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号