Base64 —— 编码/解码

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的base64库进行图片的编码解码。 以下是一个示例代码,可以将一张图片进行base64编码,并将编码后的结果进行解码并保存为新的图片文件: ``` import base64 # 将图片编码base64格式 with open("image.png", "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') # 将base64编码的字符串解码为图片并保存 with open("decoded_image.png", "wb") as output_file: output_file.write(base64.b64decode(encoded_string)) ``` 在上述代码中,首先使用`open()`函数打开要编码的图片文件,然后使用`base64.b64encode()`函数将图片内容编码base64格式。编码后的字符串需要使用`decode()`函数转换为普通的字符串,以便后续处理。 接下来,在第二个代码块中,我们将编码后的字符串解码为原始的图片内容,并使用`open()`函数将其保存为新的图片文件。在这里,我们使用`wb`模式打开输出文件,以便正确地写入二进制数据。 如果要进行base64解码而不是编码,则可以使用`base64.b64decode()`函数对编码后的字符串进行解码。例如: ``` import base64 # 从 base64 编码的字符串中解码出图片内容 with open("base64_encoded_image.txt", "r") as encoded_file: encoded_string = encoded_file.read() decoded_image = base64.b64decode(encoded_string) # 将解码后的图片内容保存为文件 with open("decoded_image.png", "wb") as output_file: output_file.write(decoded_image) ``` 在上述代码中,我们首先打开包含base64编码字符串的文件,并使用`read()`函数读取编码后的字符串。然后,我们使用`base64.b64decode()`函数将字符串解码为原始的二进制数据,并将其保存到`decoded_image`变量中。最后,我们使用`open()`函数将解码后的二进制数据写入到新的图片文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值