java Base64编码、解码


并非所有数据都可以用String类型来显示(例如字节流数据),但是都可以转为byte数组后进行base64编码再转String来显示,使用的时候再解码成原数据即可。jdk8提供了Base64的支持、使用非常简单。只需区分开encode与decode即可。

encode:编码,可以将任意数据进行base64编码

//byte数组进行编码
byte[] bytes = new byte[1024];
byte[] encode = Base64.getEncoder().encode(bytes);

decode:解码,用户将进行了base64编码的数据还原

//编码结果进行Base64解码,解码得到的byte数组即为编码源数组
byte[] encode = Base64.getDecoder().decode(encode);

所有对象类型支持Base64编码解码。

java所有对象都是继承了Object的,请看以下代码。可以确定java的所有对象类型皆可采用base64编码后传输,解码获取。

//Base64解码为String类型
String str1 = new String(Base64.getDecoder().decode(encode2));
System.out.println("原文原文文"+msg1);
System.out.println("编码解码后"+str1);
//获取 Long 类型Base64编码
Object oldObject = new Long("12354687");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(oldObject);
//原对象字节数组
byte[] bytes = outputStream.toByteArray();
//编码后字节数组
byte[] encode3 = Base64.getEncoder().encode(bytes);
//解码后字节数组
byte[] decode1 = Base64.getDecoder().decode(encode3);
//此处可以通过循环判定内容是否变更,由于字节数组内容完全相等,所以”不想等“字符串永不打印
if(bytes.length==decode1.length){
for (int i = 0; i < decode1.length; i++) {
if(bytes[i]!=decode1[i]){
System.out.println("不相等");
}
}
}
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(decode1);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
Object newObject = objectInputStream.readObject();
System.out.println("新旧对象是否相等:"+newObject.equals(oldObject));
posted @   临渊不羡渔  阅读(4040)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示