java base64编码、解码的三种方式总结
作者:Marydon 时间:2022-12-29 22:20:51
1.用法介绍
方式一:DatatypeConverter
说明:使用jdk自带的DatatypeConverter.java类实现,但是jdk版本必须>=1.6。
import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;
编码
/**
* base64编码之方法一
* @explain DatatypeConverter.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str = DatatypeConverter.printBase64Binary(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法一
* @explain DatatypeConverter.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = DatatypeConverter.parseBase64Binary(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式二:Base64
说明:使用jdk自带的Base64.java类实现,但是jdk版本必须>=1.8。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
编码
/**
* base64编码之方法二
* @explain Base64.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode2(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str =Base64.getEncoder().encodeToString(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法二
* @explain Base64.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode2(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = Base64.getDecoder().decode(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式三:Base64
所需jar包:commons-codec.jar
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
编码
/**
* base64编码之方法三
* @explain Base64.java实现
* @param str
* 待编码字符串
* @return 编码字符串
*/
public static String encode3(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 编码
base64Str =Base64.encodeBase64String(data).replaceAll("\r\n", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解码
/**
* base64解码之方法三
* @explain Base64.java实现
* @param base64Str
* 待解码字符串
* @return 解码字符串
*/
public static String decode3(String base64Str) {
// 解码后的字符串
String str = "";
// 解码
byte[] base64Data = Base64.decodeBase64(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
2.测试
public static void main(String[] args) {
String str = "http://www.cnblogs.com/Marydon20170307";
String base64 = Base64Utils.encode(str);// aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9NYXJ5ZG9uMjAxNzAzMDc=
System.out.println(base64);
String str2 = Base64Utils.decode(base64);
System.out.println(str.equals(str2));// true
}
3.效率比较
快-->慢:方式二 > 方式一 > 方式三
因此,如果项目用的是jdk1.8,最佳选择是方式二;jdk1.6,最佳选择是方式一。
来源:https://www.cnblogs.com/Marydon20170307/p/9358776.html
标签:java,base64,编码,解码
0
投稿
猜你喜欢
详解C#中通过委托来实现回调函数功能的方法
2021-08-14 05:02:58
利用spring aop实现动态代理
2022-02-02 16:50:25
Java concurrency之公平锁(二)_动力节点Java学院整理
2023-11-24 21:14:54
SpringBoot向容器注册bean的方法详解
2023-09-02 10:58:22
详解C# Socket异步通信实例
2022-08-27 14:27:22
C#设置MDI子窗体只能弹出一个的方法
2022-03-19 23:40:11
C#中的TemplateMethod模式问题分析
2021-12-01 04:02:44
Spring Cloud之配置中心的搭建
2023-04-02 21:19:49
微服务间调用Retrofit在Spring Cloud Alibaba中的使用
2022-09-29 23:13:42
SpringCloud如何使用Eureka实现服务之间的传递数据
2022-02-17 18:47:37
Android列表控件Spinner简单用法示例
2023-03-06 07:36:22
C#多线程之线程通讯(AutoResetEvent)
2021-12-26 01:48:55
C++实现的O(n)复杂度内查找第K大数算法示例
2023-06-30 15:51:13
Springboot整合Shiro的代码实例
2021-09-03 04:16:52
Java编程技巧:if-else优化实践总结归纳
2022-04-14 09:04:20
C#开发微信门户及应用(4) 关注用户列表及详细信息管理
2023-06-05 07:40:43
使用Spring Boot 2.x构建Web服务的详细代码
2022-09-17 04:08:40
C语言实现扫雷游戏(含注释详解)
2023-11-02 15:25:07
java中使用xls格式化xml的实例
2023-06-13 09:43:07
Java使用Collections.sort()排序的方法
2022-09-11 18:47:55