Base64的编解码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xxssyyyyssxx/article/details/97899926

Base64编码是将字节数组编码为可以打印的字符数组,解码是将Base64的字符数组还原为原字节数组。

1.8之前,我们一般可以使用 sun.misc.BASE64Encodersun.misc.BASE64Decoder来进行Base64的编解码,但是这个API是sun公司的专用API,可能在未来发行版中删除,一般在IDE中都有警告或者报错,编译的时候也会警告。所以我们一般还会使用apache的commons-codec包中的org.apache.commons.codec.binary.Base64,在1.8中JDK提供了原生的Base64编解码器java.util.Base64.getEncoder()java.util.Base64.getDecoder(),这些都可以完美替换掉专用的API。
下面给出示例代码:

public static void main(String[] args) throws Exception{
        byte[] ss = new byte[]{1,2,3,4,5,6,7,8,9,0,-23,23,21,-128,127};
        byte[] encodeBase64 = org.apache.commons.codec.binary.Base64.encodeBase64(ss);
        print(encodeBase64);
        System.out.println(new String(encodeBase64));
        byte[] decodeBase64 = org.apache.commons.codec.binary.Base64.decodeBase64(encodeBase64);
        print(decodeBase64);

        System.out.println("-----------------------------");
        String encode = new sun.misc.BASE64Encoder().encode(ss);
        System.out.println(encode);
        byte[] bytes = new sun.misc.BASE64Decoder().decodeBuffer(encode);
        print(bytes);

        System.out.println("-----------------------------");
        byte[] bytes1 = java.util.Base64.getEncoder().encode(ss);
        print(bytes1);
        String x = new String(bytes1);
        System.out.println(x);
        byte[] decode = java.util.Base64.getDecoder().decode(x);
        print(decode);
    }

    private static void print(byte[] c){
        if(org.apache.commons.codec.binary.Base64.isBase64(c)){
            for (int i = 0; i < c.length; i++) {
                System.out.print((char)c[i]+"-");
            }
        }else {
            for (int i = 0; i < c.length; i++) {
                System.out.print(c[i]+"-");
            }
        }

        System.out.println();
    }
展开阅读全文

没有更多推荐了,返回首页