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