Base64 —— 编码/解码

Base64是一种使用64个字符表示二进制数据的编码方式,常见于小图片的传输、下载链接的加密和简单的数据加密。在Java和Android中,有对应的Base64编码和解码API。根据原文字符数与3的余数,编码时会添加不同数量的等号作为填充。代码示例展示了Base64编码和解码过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Base64是基于64个字符来表示二进制数据的方法。由于2的6次方等于64,所以每6位为一个字符,对应某个字符。在Base64中的表示字符包括A-Z、a-z、0-9,这样共有62个字符,从左往右依次代表0-61,剩下两个字符:+代表62、/代表63。此外还有一个特殊字符=,它的作用稍后再解释。
主要的应用场景:

  1. 当我们发送一些很小的图片时,并不是发送图片的URL链接给对方,而是对图片本身的字节信息进行Base64编码,然后发送给对方。
  2. 迅雷等下载工具,会有他们自己特有的下载链接,其实就是把一个URL资源地址加上了某些东西后再进行Base64编码,然后加上thunder://头。
  3. 用于简单的加密,有的公司会把Base64的字符表示顺序打乱,这样就算别人用Base64进行解码,也不会得到正确的原文。

Android有自己的Base64类,使用方法不同于Java中的Base64:

public static String encodeToString(byte[] src, int flags)  // 编码
public static byte[] decode(String encode, int flags)   // 解码

flags:一般使用Base64.DEFAULT就行,它会在结果尾部加上一个换行符,还有一种模式Base64.NO_WRAP,则不加换行。

接下来我们来分析下Base64的编码原理。Base64编码时用6位来表示一个字符,而普通的字符为8位,这样就会出现三种情况:

  1. 原文字符数 % 3 = 0:24bit的整数倍,此时正好分配,xxxx xx|xx xxxx| xxxx xx|xx xxxx
  2. 原文字符数 % 3 = 1:多出2bit,需要在后加四个零补满,然后再加上两个等号,xxxx xx|
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值