Base16 编码使用 16 个 ASCII 可打印字符(数字 0-9 和字母 A-F)对任意字节数据进行编码。
Base16 先获取输入字符串每个字节的二进制值(不足 8 比特在高位补 0),然后将其串联进来,再按照 4 比特一组进行切分,将每组二进制数分别转换成十进制,在下述表格中找到对应的编码串接起来就是 Base16 编码。如下图:
注意:8 比特数据按照 4 比特切分刚好是两组,所以 Base16 不可能用到填充符号“=”。
Base16 编码后的数据量是原数据的两倍:1000 比特数据需要 250 个字符(即 250*8=2000 比特)。换句话说:Base16 使用两个 ASCII 字符去编码原数据中的一个字节数据。
Base16 编码是一个标准的十六进制字符串(注意是字符串而不是数值),更易被人类和计算机使用,因为它并不包含任何控制字符,以及 Base64 和 Base32 中的“=”符号。
以大写的“ILU”为例,下面表格分别列出每个字母的 ASCII 编码,ASCII 编码对应的二进制字符串和切分成 4 位的二进制对应的十进制,然后根据 Base16 编码表找到对应的值。如下图:
查看 Base64 类的详细用法,请参考官网 API 文档,地址如下:
http://commons.apache.org/proper/commons-codec/apidocs/index.html