并非所有数据都可以用String类型来显示(例如字节流数据),但是都可以转为byte数组后进行base64编码再转String来显示,使用的时候再解码成原数据即可。jdk8提供了Base64的支持、使用非常简单。只需区分开encode与decode即可。
encode:编码,可以将任意数据进行base64编码
| |
| byte[] bytes = new byte[1024]; |
| byte[] encode = Base64.getEncoder().encode(bytes); |
decode:解码,用户将进行了base64编码的数据还原
| |
| byte[] encode = Base64.getDecoder().decode(encode); |
所有对象类型支持Base64编码解码。
java所有对象都是继承了Object的,请看以下代码。可以确定java的所有对象类型皆可采用base64编码后传输,解码获取。
| |
| String str1 = new String(Base64.getDecoder().decode(encode2)); |
| System.out.println("原文原文文"+msg1); |
| System.out.println("编码解码后"+str1); |
| |
| 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)); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)