个人blog-1: 拾忆生活
个人blog-2: 极简-拾忆生活
欢迎大家来踩,同步更新
总体:
hex编码不区分大小写,base32与base64编码区分大小写
三种都是稳定的把二进制数组变成可见字符的编码方式
hex(=base16)
1.使用16个可见字符来表示一个二进制数组,编码后数据大小将x2
2.1个字符需要用2个可见字符来表示
base32
1.使用32个可见字符来表示一个二进制数组,编码后数据大小变成原来的8/5
2.5个字符用8个可见字符表示,不足8个字符,将用=来补充
base64
1.使用64个可见字符来表示一个二进制数组,编码后数据大小变成原来的4/3
2.3个字符用4个可见字符来表示
测试:
@Test
public void test(){
String data = "测试编码内容" ;
byte[] bytes = data.getBytes() ;
//测试hex
try {
long start = System.currentTimeMillis() ;
String encryStr = "" ;
String decryStr = "" ;
for(int i= 0 ; i < 10000 ; i++) {
encryStr = Hex.encodeHexString(bytes) ;
decryStr = new String(Hex.decodeHex(encryStr.toCharArray())) ;
}
print("Hex:" + (System.currentTimeMillis() - start ) + " ms " + encryStr + " | " + decryStr) ;
} catch (Exception e) {
e.printStackTrace();
}
//测试base64
try {
long start = System.currentTimeMillis() ;
String encryStr = "" ;
String decryStr = "" ;
for(int i= 0 ; i < 10000 ; i++) {
encryStr = Base64.encodeBase64String(bytes) ;
decryStr = new String(Base64.decodeBase64(encryStr.getBytes()) );
}
print("base64: " + (System.currentTimeMillis() - start ) + " ms " + encryStr + " | " + decryStr) ;
} catch (Exception e) {
e.printStackTrace();
}
}
结论:
hex编码速度快,体积大;base64编码速度慢,体积小