JAVA十六进制与字符串的转换方法

在java程序中,十六进制与字符串是怎么转换的呢?下面yjbys小编就为大家分享JAVA十六进制与字符串的转换方法,一起来看看吧!

第一种方法:

将指定byte数组以16进制的形式打印到控制台

toHexString

public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。

如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的.大小值为零,则用一个零字符 '0' ('\u0030') 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:

0123456789abcdef

这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:

Integer.toHexString(n).toUpperCase()

参数:

i - 要转换成字符串的整数。

返回:

用十六进制(基数 16)参数表示的无符号整数值的字符串表示形式。

// 转化字符串为十六进制编码

public static String toHexString(String s)

{

String str="";

for (int i=0;i

{

int ch = (int)s.charAt(i);

String s4 = Integer.toHexString(ch);

str = str + s4;

}

return str;

}

// 转化十六进制编码为字符串

public static String toStringHex(String s)

{

byte[] baKeyword = new byte[s.length()/2];

for(int i = 0; i < baKeyword.length; i++)

{

try

{

baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));

}

catch(Exception e)

{

e.printStackTrace();

}

}

try

{

s = new String(baKeyword, "utf-8");//UTF-16le:Not

}

catch (Exception e1)

{

e1.printStackTrace();

}

return s;

}

// 转化十六进制编码为字符串

public static String toStringHex(String s)

{

byte[] baKeyword = new byte[s.length()/2];

for(int i = 0; i < baKeyword.length; i++)

{

try

{

baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));

}

catch(Exception e)

{

e.printStackTrace();

}

}

try

{

s = new String(baKeyword, "utf-8");//UTF-16le:Not

}

catch (Exception e1)

{

e1.printStackTrace();

}

return s;

}

public static void main(String[] args) {

System.out.println(encode("中文"));

System.out.println(decode(encode("中文")));

}

/*

* 16进制数字字符集

*/

private static String hexString="0123456789ABCDEF";

/*

* 将字符串编码成16进制数字,适用于所有字符(包括中文)

*/

public static String encode(String str)

{

//根据默认编码获取字节数组

byte[] bytes=str.getBytes();

StringBuilder sb=new StringBuilder(bytes.length*2);

//将字节数组中每个字节拆解成2位16进制整数

for(int i=0;i

{

sb.append(hexString.charAt((bytes[i]&0xf0)>>4));

sb.append(hexString.charAt((bytes[i]&0x0f)>>0));

}

return sb.toString();

}

/*

* 将16进制数字解码成字符串,适用于所有字符(包括中文)

*/

public static String decode(String bytes)

{

ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);

//将每2位16进制整数组装成一个字节

for(int i=0;i

baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));

return new String(baos.toByteArray());

}

更多相关文章推荐:

java十六进制与字符串_JAVA十六进制与字符串的转换方法相关推荐

  1. java 16进制_JAVA十六进制数据接收与传输

    由于项目中经常遇到与设备进行交互获取数据,不仅有Python版本.还有Java版本,还可能会有C#版本,在此做个记录. 一.十六进制转换工具类 主要包含十六进制字符串转ASCII,ASCII转十六进制 ...

  2. java 字符分割函数_java中的字符串分割函数

    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: java.lang.string.split split ...

  3. java中截取部分字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  4. java 过滤字符串_java实现压缩字符串和java字符串过滤

    题目一:通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果 ...

  5. java截取倒数后六位的字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  6. java十六进制转十进制_java十六进制转十进制

    java十六进制转十进制 (2017-02-02 20:58:58) 标签: it 分类: 蓝桥杯 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进 ...

  7. java控制台两个字符串_java控制台输入字符串

    实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...

  8. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  9. java正则表达式所有字符串_java正则表达式获取字符串中所有匹配的内容

    在java中,很多时候需要解析一段字符串获取符合条件的所有匹配项.下面例子获取一段字符串中满足   ${字母数字}  条件的字符串的代码 ​ import java.util.List; import ...

最新文章

  1. NDK JNI 安装与配置(一)(UBUNTU16.04 )
  2. Java黑皮书课后题第2章:2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,显示平均加速度
  3. Head First C学习日志 第七章 创建可变参数的函数
  4. Vue warn Failed to mount component: template or render function not defined
  5. 使用Eclipse+PyDev创建Django项目一windows下
  6. 树莓派禁用SD卡上的swap交换空间
  7. 大数据治理会遇到哪些难题
  8. SpringMVC访问流程
  9. SVN删除或新建(添加)文件
  10. 如何用C语言编写字母游戏,怎么样用C语言编写一个小游戏?
  11. 大厂Sketch组件库源文件
  12. echarts geo地图示例_Echarts地图展示及属性分析
  13. oracle报03113,一条SQL查询,报ora-03113的错误,请高手分析
  14. Securing Services with Spring Cloud Gateway
  15. 基于SSH开发报刊订阅管理系统的设计与实现
  16. 域和工作组的概念以及区别
  17. 范美忠妻子:美忠是个好男人
  18. 2.模仿小米通讯录的快速索引demo
  19. 领导最不赏识这5类下属
  20. android studio 下拉菜单,怎么在android studio中使用Spinner实现一个下拉菜单

热门文章

  1. python考勤管理系统_python基础教程:face++与python实现人脸识别签到(考勤)功能...
  2. python对csv文件中的数据进行分类_python 数据处理 对csv文件进行数据处理
  3. 小米机器狗CyberDog
  4. Android报错:No resource found that matches the given name 'Theme.AppCompat.Light.NoActionBar'
  5. Baksmali用法
  6. Objdump查看汇编和源码
  7. Mac OS X上使用Wireshark(可用)
  8. android键盘输出增加按键码
  9. Erlang初学:Erlang的一些特点和个人理解总结
  10. 由树莓派折腾中联想到的一个需求---基于Wiki的分布式协同编辑百科学习笔记本