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

网友投稿 698 2023-03-01

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

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 stlvQsWfjdsatic String encode3(String str) {

    // base64字符串

    String base64Str = "";

    try {lvQsWfjds

        // String-->byte[]

        byte[] data = str.getBytes("utf-8");

        // 编码

     &nbhttp://sp;  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://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编码、解码的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:idea2020.3测试评价及感受
下一篇:遥感大数据平台(遥感大数据平台有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~