java base64解码_java base64编码、解码的三种方式总结

本文详细介绍了Java中Base64编码和解码的三种方法,包括使用JDK自带的`DatatypeConverter`和`Base64`类,以及引入`commons-codec.jar`库的方法。通过代码示例展示了每种方式的编码和解码过程,并进行了效率比较,指出在JDK 1.8及以上版本中,使用`Base64`类的方式更为高效。
摘要由CSDN通过智能技术生成

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,最佳选择是方式一。

以上就是java base64编码、解码的三种方式总结的详细内容,更多关于java base64编码、解码的资料请关注脚本之家其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值