一、什么是Hex

将每一个字节表示的十六进制表示的内容,用字符串来显示。

二、作用

将不可见的,复杂的字节数组数据,转换为可显示的字符串数据

类似于Base64编码算法

区别:Base64将三个字节转换为四个字符,Hex将三个字节转换为六个字节

三、应用场景

在XML,JSON等文本中包含不可见数据(二进制数据)时使用

四、使用

1、将字节数组转换为字符串

 /**
* 将字节数组转换为字符串
* 一个字节会形成两个字符,最终长度是原始数据的2倍
* @param data
* @return
*/
public static String toHex(byte[] data){
String ret = null; //TODO 将字节数组转换为字符串
if (data != null && data.length>) {
StringBuilder sb = new StringBuilder();
for (byte b: data){
//分别获取高四位,低四位的内容,将两个数值,转为字符
int h = (b>>)&0x0f;
int l = b&0x0f;
char ch ,cl;
if( h > ){
ch = (char) ('A'+(h-));
}else{ //0--9
ch = (char) (''+h);
} if(l>){
cl = (char) ('A'+(l-));
}else{ //0--9
cl = (char) (''+l);
} sb.append(ch).append(cl);
}
ret = sb.toString();
} return ret;
}

2、将字符串转换为字节数组

  public static byte[] fromHex(String str) {
byte[] ret = null; //TODO 将Hex编码的字符串,还原为 原始的字节数组
if (str != null) {
int len = str.length();
if (len > && len % == ) {
char[] chs = str.toCharArray();
ret = new byte[len / ];
for (int i = , j = ; i < len; i += , j++) {
char ch = chs[i];
char cl = chs[i + ]; int ih = , il = , v = ;
if (ch >= 'A' && ch <= 'F') {
ih = + (ch - 'A');
} else if (ch >= 'a' && ch <= 'f') {
ih = + (ch - 'a');
} else if (ch >= '' && ch <= '') {
ih = ch - '';
} if (cl >= 'A' && cl <= 'F') {
il = + (cl - 'A');
} else if (cl >= 'a' && cl <= 'f') {
il = + (cl - 'a');
} else if (cl >= '' && cl <= '') {
il = cl - '';
} v = ((ih & 0x0f) << ) | (il & 0x0f);
//赋值
ret[j] = (byte) v;
}
}
}
return ret;
}

相关知识:

浅谈Base64编码算法

浅谈URLEncoder编码算法

最新文章

  1. php这是一个随机打印输出字符串的例子
  2. AS3 从外部SWF中获取资源的方法(ApplicationDomain的使用)
  3. mac下忘记mysql密码, 重新设置mysql密码
  4. POJ 3009 Curling 2.0 回溯,dfs 难度:0
  5. 值得推荐的C/C++框架和库(转)
  6. Delphi静态加载DLL和动态加载DLL示例
  7. Java之向左添加零(000001)第二种方法
  8. mysql 不支持innodb的问题解决
  9. Joomla3.1.1在64位win7下安装
  10. GPS 偏移校正(WGS-84) 至(GCJ-02) java版本号以实现
  11. linux命令学习6-dpkg命令
  12. MySQL数据库设计总结
  13. Core Animation 文档翻译 (第六篇)
  14. CSS脱离文档流&amp;浮动
  15. new、override关键字
  16. java linux ftp问题
  17. 五、Oracle的常识点
  18. vs2017 Remote Debugger远程调试目录
  19. gateio API
  20. Linux系统——JumpServer跳板机的搭建和部署

热门文章

  1. Android应用安全之Android APP通用型拒绝服务漏洞
  2. 自己动手搭建 Redis 环境,并建立一个 .NET HelloWorld 程序测试
  3. Linux高级编程--06.进程概述
  4. java中String byte HexString的转换
  5. 受限玻尔兹曼机(RBM)学习笔记(三)能量函数和概率分布
  6. 流行趋势:25款很酷的长阴影效果 LOGO 设计
  7. Javascript之旅(一)
  8. Scrum 项目5.0--软件工程
  9. c3p0配置
  10. UVA题目分类