* Hex编码的原理就是将原来8位的二进制字节打断,分成两个4位的,并且在前面加上4个零,
* 进行补位这样一个8位二进制字节就变成了2个8位的二进制字节,在将新得到的2个二进制字符进行16位进制转换
* 得到的新的16位字符串就是Hex的值,所以 二进制的[72, 69, 88] 《hex》 484558是相等的。
* [72, 69, 88]byte数组的二进制=01001000 01000101 01011000
* 二进制=01001000 01000101 01011000 进行hex的打断操作 0100 1000 0100 0101 0101 1000
* 在加上前面的4个零得到一个新的6个8位二进制 = 00000100 00001000 00000100 00000101 00000101 00001000
* 新的6个8位二进制 进行16进制转换 00000100 00001000 00000100 00000101 00000101 00001000 = 484558
* 总结所以说Hex编码后的二进制长度变为了原来的2倍,所以字节长度增加了一倍。
字符串: HEX
ASCII码: [72,69,88]
二进制码: 01001000 01000101 01011000
重新分组: 0100 1000 0100 0101 0101 1000
高位补零后的二进制码: 00000100 00001000 00000100 00000101 00000101 00001000
十六进制码: 4 8 4 5 5 8
Hex码: 484558
package com.gl.test;
import org.apache.commons.codec.binary.Hex;
import java.util.Arrays;
public class TestHex {
public static void main(String[] args) {
//一个字符串
String hex = "HEX";
//获取字符串的byte数组
byte[] buf = hex.getBytes();
//输出byte数组
System.out.println(Arrays.toString(buf));
//转换成Hex输出
System.out.println(Hex.encodeHexString(buf));
}
}
注:这里需要引入 org.apache.commons.codec的jar包。
maven格式:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>