浅谈Hex编码算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了浅谈Hex编码算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1850字,纯文字阅读大概需要3分钟。
内容图文
![浅谈Hex编码算法](/upload/InfoBanner/zyjiaocheng/1219/332d7460259841a788d01c0ce63ae96f.jpg)
一、什么是Hex
将每一个字节表示的十六进制表示的内容,用字符串来显示。
二、作用
将不可见的,复杂的字节数组数据,转换为可显示的字符串数据
类似于Base64编码算法
区别:Base64将三个字节转换为四个字符,Hex将三个字节转换为六个字节
三、应用场景
在XML,JSON等文本中包含不可见数据(二进制数据)时使用
四、使用
1、将字节数组转换为字符串
1 /* * 2 * 将字节数组转换为字符串 3 * 一个字节会形成两个字符,最终长度是原始数据的2倍 4 * @param data 5 * @return 6 */ 7 public static String toHex(byte[] data){ 8 String ret = null; 910//TODO 将字节数组转换为字符串11if (data != null && data.length>0) { 12 StringBuilder sb = new StringBuilder(); 13for (byte b: data){ 14//分别获取高四位,低四位的内容,将两个数值,转为字符15int h = (b>>4)&0x0f; 16int l = b&0x0f; 17char ch ,cl; 18if( h > 9 ){ 19 ch = (char) (‘A‘+(h-10)); 20 }else{ //0--921 ch = (char) (‘0‘+h); 22 } 2324if(l>9){ 25 cl = (char) (‘A‘+(l-10)); 26 }else{ //0--927 cl = (char) (‘0‘+l); 28 } 293031 sb.append(ch).append(cl); 32 } 33 ret = sb.toString(); 34 } 3536return ret; 37 }
2、将字符串转换为字节数组
1 public static byte [] fromHex(String str) { 2 byte[] ret = null; 3 4//TODO 将Hex编码的字符串,还原为 原始的字节数组 5if (str != null) { 6int len = str.length(); 7if (len > 0 && len % 2 == 0) { 8char[] chs = str.toCharArray(); 9 ret = newbyte[len / 2]; 10for (int i = 0, j = 0; i < len; i += 2, j++) { 11char ch = chs[i]; 12char cl = chs[i + 1]; 1314int ih = 0, il = 0, v = 0; 15if (ch >= ‘A‘ && ch <= ‘F‘) { 16 ih = 10 + (ch - ‘A‘); 17 } elseif (ch >= ‘a‘ && ch <= ‘f‘) { 18 ih = 10 + (ch - ‘a‘); 19 } elseif (ch >= ‘0‘ && ch <= ‘9‘) { 20 ih = ch - ‘0‘; 21 } 2223if (cl >= ‘A‘ && cl <= ‘F‘) { 24 il = 10 + (cl - ‘A‘); 25 } elseif (cl >= ‘a‘ && cl <= ‘f‘) { 26 il = 10 + (cl - ‘a‘); 27 } elseif (cl >= ‘0‘ && cl <= ‘9‘) { 28 il = cl - ‘0‘; 29 } 3031 v = ((ih & 0x0f) << 4) | (il & 0x0f); 32//赋值33 ret[j] = (byte) v; 34 } 35 } 36 } 37return ret; 38 }
原文:http://www.cnblogs.com/xqxacm/p/4886718.html
内容总结
以上是互联网集市为您收集整理的浅谈Hex编码算法全部内容,希望文章能够帮你解决浅谈Hex编码算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。