Base16算法的Java实现版本。
Base16算法就是将一串字节流转换成0-9a-f的序列。我们知道一个字节为8位,正好可以转换成两个16进制数,(高四位和低四位)。比如字节:11010011 -> 1101 0011 -> d 3
public class Base16 {
private static final char[] upper = "0123456789ABCDEF".toCharArray();
private static final char[] lower = "0123456789abcdef".toCharArray();
private static final byte[] decode = new byte[128];
static {
for (int i = 0; i < 10; i++) {
decode['0' + i] = (byte) i;
decode['A' + i] = (byte) (10 + i);
decode['a' + i] = (byte) (10 + i);
}
}
private Base16() {
}
public static char[] encode(byte[] src, boolean upper) {
char[] table = upper ? Base16.upper : Base16.lower;
char[] dst = new char[src.length * 2];
for (int si = 0, di = 0;