base64和"%02x"编码比较

本文对比了Base64与%02x两种编码方式的特点及应用场景。Base64通过将24位二进制分成4组各6位的方式进行编码,编码后字符量增加约25%;而%02x编码则直接将二进制转换为16进制字符,每个字节变为两个字符,使得编码量增加50%。

Base64编码


最重要的事情放第一行:参考男神阮一峰的base64博客


按照男神说法,base64核心是把24位二进制bit分为4组,每组6位bit,再在每组前加两个bit的0,新的每组为8位bit,共32位bit。以新的8位bit组来映射字符集,8位共0-63种状态,映射关系如 : 0 -> A 、 1->B  、 63->/ 、  垫字符= 

显然的,编码后的字符量会增加约25%


"%02x"编码


二进制bit以16进制的字符表示

x:输入表示二进制

02:输出至少2位字符,不足的前面加"0"字符


SecureRandom random = SecureRandom.getInstanceStrong();

byte[] temp = new byte[20];

random.nextBytes(temp);

StringBuffer sb = new StringBuffer();

for (byte b : temp) {

       sb.append(String.format("%02x",b));
}

String out = sb.toString();


编码效果如 : 00011000 -> "19"

这样一个byte会变成2个字符,相比一个byte对应一个字符的编码方式,编码量增加50%


小弟认为,base64比%02x编码方式更加节约空间


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值