Base64的编解码

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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值