Hex编码字节
2016-07-12 15:41
267 查看
1、将字节数组转换为字符串
2、将字符串转换为字节数组
/** * 将字节数组转换为字符串 * 一个字节会形成两个字符,最终长度是原始数据的2倍 * @param data * @return */ public static String toHex(byte[] data){ String ret = null; //TODO 将字节数组转换为字符串 if (data != null && data.length>0) { StringBuilder sb = new StringBuilder(); for (byte b: data){ //分别获取高四位,低四位的内容,将两个数值,转为字符 int h = (b>>4)&0x0f; int l = b&0x0f; char ch ,cl; if( h > 9 ){ ch = (char) ('A'+(h-10)); }else{ //0--9 ch = (char) ('0'+h); } if(l>9){ cl = (char) ('A'+(l-10)); }else{ //0--9 cl = (char) ('0'+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 > 0 && len % 2 == 0) { char[] chs = str.toCharArray(); ret = new byte[len / 2]; for (int i = 0, j = 0; i < len; i += 2, j++) { char ch = chs[i]; char cl = chs[i + 1]; int ih = 0, il = 0, v = 0; if (ch >= 'A' && ch <= 'F') { ih = 10 + (ch - 'A'); } else if (ch >= 'a' && ch <= 'f') { ih = 10 + (ch - 'a'); } else if (ch >= '0' && ch <= '9') { ih = ch - '0'; } if (cl >= 'A' && cl <= 'F') { il = 10 + (cl - 'A'); } else if (cl >= 'a' && cl <= 'f') { il = 10 + (cl - 'a'); } else if (cl >= '0' && cl <= '9') { il = cl - '0'; } v = ((ih & 0x0f) << 4) | (il & 0x0f); //赋值 ret[j] = (byte) v; } } } return ret; }
相关文章推荐
- 【NOIP2013模拟11.5A组】游戏节目
- iptables规则的查看、添加、删除和修改
- 【android学习】socket传输中,流的关闭
- bzoj3440: 传球游戏
- 网络流-最小费用最大流
- 多张图片合成加载动画
- xml报错 Parse Fatal Error :在实体引用中,实体名称必须紧跟在'&'后面
- 单链表实现(超简单)
- Java学习之Iterator(迭代器)的一般用法 (转)
- ceph自动化测试用例编写
- RSA加密
- Merge Two Sorted Lists
- 14web启动将数据加载到内存中
- Linux下编译软件时指定安装目录
- Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化
- 如何解决github安装失败
- [大周天祭]第一个大周天360篇博文纪念
- oracle基础二
- Math.random()随机产生【x,y)的随机数
- 13Spring文件上传下载