关于Base64编码的问题

JAVA8提供的BASE64工具类

java8 开始提供了一个Base64工具类,用来进行Base64编码。 Base64是经常使用的一个编码方案,用于网络传输。它的是原理是将3字节变4字节。按6位进行重新组合,6位的2进制最大数是63,Base64定义了64个字符,分别是a-z,A-Z,0-9.'+','/'。这是RFC2045规定的。但是‘+’在URL中传输可能有问题,因为有些浏览器就+号变成空了。所以后面又出了个RFC4648规则。它的Base64编码将最后两位,'+'变成'-','/'变成‘_’。BASE64编码按3字节划分完后,会出现最后可能剩1个节节和2个字节的情况。如果剩一个字节。变成BASE64最后还缺2个字节,缺的补‘=’号,缺几个字节补几个‘=’号。有些老的工具类可能会对Base64编码后进行换行,这RFC2045里面的一部分,默认一般是76个字符后换后,换行一般是添加/r/n。 JAVA的例子,出现+号,+号是62。 出现+号例子

public static void main(String[] args) {
        //63 补码1111_10_00  减- 1111_0111 取反1000_1000
        byte[] a = {-0b0000_1000};

        System.out.println( Base64.getEncoder().encodeToString(a));
    }
	

结果如下:

+A==

出现-号例子:

public static void main(String[] args) {
        //63 补码1111_10_00  减- 1111_0111 取反1000_1000
        byte[] a = {-0b0000_1000};

        System.out.println( Base64.getUrlEncoder().encodeToString(a));
    }

结果如下:

-A==

转载于:https://my.oschina.net/u/3217171/blog/3039589

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值