当前位置: 首页 > 工具软件 > heX > 使用案例 >

Hex编码

傅鸿波
2023-12-01

Hex编码的编码原理:

* 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位二进制 = 0000‭0100 00001000 ‬0000‭0100 00000101‬ 0000‭0101 00001000
* 新的6个8位二进制 进行16进制转换 0000‭0100 00001000 ‬0000‭0100 00000101‬ 0000‭0101 00001000 = 484558
* 总结所以说Hex编码后的二进制长度变为了原来的2倍,所以字节长度增加了一倍。

Hex的编码过程:

字符串:                    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>

 

 类似资料: