Java Base64编码怎么用?一文详解java.util.Base64类实现与原理
作者:直走的螃蟹
还在纠结Base64编码怎么用?本文通过Java 8的java.util.Base64类,手把手教你实现编码,并深入解析Base64原理:从字符串转二进制、6位分组到补等号,用实例“sd”演示完整过程,轻松掌握编码规则
Java实现
使用java.util.Base64类来实现Base64编码。
该类是Java8引入的。
String str = "sd";
System.out.println("str:" + str);
// 进行Base64编码
byte[] bytes = str.getBytes("utf-8");
String encode = Base64.getEncoder().encodeToString(bytes);
System.out.println("encode:" + encode);
// 进行Base64解码
byte[] bytes1 = Base64.getDecoder().decode(encode);
String decode = new String(bytes1, "utf-8");
System.out.println("decode:" + decode);输出: str:sd encode:c2Q= decode:sd
上面就是java实现的代码,使用起来是很方便的。下面来说说Base64编码的原理。
Base64编码
Base64编码的作用:将字符串转为由64个特定字符组成的编码,这种编码方式适用于不支持特定编码的情况。
详解
一、首先来看,原字符串是“sd”。
将字符串转为二进制编码形式。这里是采用utf-8。
- s的编码:115。二进制展示是:01110011。
- d的编码:100。二进制展示是:01100100。
上面的二进制是8个字节的,由于要转换为64个字符展示的字符串,所以需要以6个字节作为一个单位来展示。
我们将两个编码合并起来:0111001101100100
二、由于现在是16个字节(8+8),如果以6个字节为单位的话,字节数量是不够的。
因此在后面补0:011100110110010000
三、然后以6个字节为单位分割该编码:011100,110110,010000
再转换为十进制表示:28,54,16
四、根据下面表格
找到索引对应的字符,得到Base64编码的结果:c2Q

--图片来源base64百度百科
五、通常,编码结果不满4个字符时,会在后面补上=
因此编码的最终结果是:c2Q=
既然编码方式知道了,那么解码方式也就知道了。这里就不详细再说了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
