字节数组与16机制字符关系
JDK提供的算法,计算得到的结果一般是字节数组。
1字节=1Byte=8bit 字节数组经常需要 显式表达。
2的7次幂等于128 加上 符号位(+)
我们一般使用16进制(0-F)来表达,4bit可以表达16进制的值。
所以转化为16进制字符串的长度,是字节数组长度的2倍。
也就是2个16进制的字符,才能完整表达一个字节的值。
Base64
Base64 编码是基于64个字符 A-Z,a-z,0-9,+,/ 的编码方式,因为2的6次方正好为64,所以就用6bit就可以表示出64个字符。
字节数组转Base64时,就是用64进制来显式表达。
3个字节,24bit,正好可以表达Base64中4个字符。
所以长度大概是字节数组的1.3333倍。
1、要求被编码字符是 8bit 的,所以须在 ASCII 编码范围内,u0000-u00ff,不允许中文。
2、如果被编码字符长度不是3的倍数,则用0代替,对应的输出字符为 "="
譬如长度为32的字节数组,需要用一个0来补全至3的倍数。
所以转为Base64时,最后一个6bit,一定是6个0,最后一位一定是“=”