为什么要使用base64?

Base64编码用于在ASCII文本为基础的协议如HTTP中传输二进制数据,常见于电子邮件附件、HTTP授权信息和数据URL。它将二进制数据转为可读字符串,但会增加数据大小。此方法在处理小规模图像等资源时适用,但不适用于大文件,如视频和音频,因性能问题。
摘要由CSDN通过智能技术生成

 

 简单说,因为某些场合并不能传输或者储存二进制流。

        比如,如果一个传输协议是基于ASCII文本的,那么它就不能传输二进制流,那你要将二进制流传输就得编码。常见的诸如 http 协议的 url 就是纯文本的,不能直接放二进制流。特别的,大多数现代语言的 String 类型,都不能直接储存二进制流,但可以储存BASE64编码的字符串。如果你希望用 String 类型操作一切数据,那就没法直接用二进制流。当然,另外还有一个原因,就是某些协议会对二进制流中的特定字符进行特殊处理(比如ASCII的0~32编码的字符在某些传输介质中,是会被当作特殊含义处理的),这种时候就需要通过编码来避开这些特定字符了。

历史发展

        在早期的计算机系统中,主要使用的是文本数据。然而,随着计算机应用的扩展,需要在不同的系统之间传输和存储二进制数据,例如图像、音频、视频等。传统的文本编码方式(如ASCII编码)无法直接表示二进制数据,因此需要一种编码方式,能够将二进制数据转换为文本形式,便于传输和存储。

        Base64编码的起源可以追溯到1970年代和1980年代。最早被广泛采用的是MIME(Multipurpose Internet Mail Extension)标准,用于在电子邮件中传输非文本数据。Base64编码是MIME标准中的一部分,用于将非文本数据转换为可安全传输的文本格式。

Base64原理

        Base64编码的工作原理是将3个字节(24位)的二进制数据划分为4个6位的组,然后将这些6位组映射为6位字符集中的可打印字符。如果二进制数据不是3的倍数,会进行填充以满足长度要求。编码后的文本长度通常比原始数据长度稍长。       

        举个简单的例子,比方说前端上传图片,一般直接上传图片的二进制数据,如果想把返回的Json 数据中放一个图片的二进制就不行的,如果想通过json放一个图片的数据(不是图片的URL).你就要考虑 将图片的二进制转化为Base64 进行处理了。也就是如果传输协议是纯文本的,你要想传输数据的话,那你要么传图片的url,要么传图片的Base64.但是Base64 你不能搞太长了,要不又有性能问题了,因为base64 要比原来的更长,所以没有人用base 64 来传视频和音频资源,只用来传一些小的图片资源。

        http 虽然是纯文本的协议,但是http有针对二进制数据做特殊的规定(mime),所以用http直接传输二进制,所以需要就是例子说的那样了。

常见应用

  1. 在电子邮件中传输附件:早期的电子邮件系统只支持文本数据,无法直接传输二进制文件。通过使用Base64编码,可以将二进制文件(例如图像、文档)转换为文本,并作为邮件的一部分进行传输。

  2. 在HTTP协议中传输授权信息:当需要通过HTTP请求传输用户名和密码等敏感信息时,为了安全起见,通常对这些信息进行Base64编码。虽然Base64编码并不是加密,但可以隐藏明文的形式,提高数据传输的安全性。

  3. 数据URL(Data URL):数据URL允许在网页中内联嵌入小型资源,而不必单独发起HTTP请求。数据URL以Base64编码的形式将资源数据嵌入URL中,例如图像、音频或CSS样式表。

  4. 存储图像数据:在某些情况下,需要将图像数据存储为文本格式,例如在数据库中存储或传输时。Base64编码可以将图像数据转换为字符串,方便存储和处理。

总结

        Base64编码是一种常见的二进制数据表示方式,通过将二进制数据转换为文本形式,便于传输和存储。它在许多应用场景中发挥着重要作用,例如电子邮件附件传输、HTTP协议授权信息、数据URL和图像数据存储等。虽然Base64编码会增加数据大小,但却提供了广泛的兼容性和可读性,使得二进制数据能够在文本环境中方便地处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leviash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值