96

为什么我们有 Base64 编码?我是初学者,我真的不明白你为什么要将字节混淆成其他东西(除非它是加密)。在我读过的其中一本书中,当无法进行二进制传输时,Base64 编码很有用。例如。当我们发布表单时,它会被编码。但是为什么我们要把字节转换成字母呢?难道我们不能把字节转换成字符串格式,中间有一个空格吗?例如,00000001 00000004?或者只是0000000100000004没有任何空间,因为字节总是成对的 8?

4

3 回答 3

127

Base64 是一种将二进制数据编码为几乎每个计算机系统都知道的 ASCII 字符集的方法,以便在不丢失或修改内容本身的情况下传输数据。例如,邮件系统无法处理二进制数据,因为它们需要 ASCII(文本)数据。因此,如果您要传输图像或其他文件,它会因为处理数据的方式而损坏。

注意:base64 编码不是一种加密方式,也不是一种压缩数据的方式。事实上,base64 编码的数据片段比原始数据片段大 1.333... 倍。这只是一种确保在传输过程中不会丢失或修改数据的方法。

于 2012-04-25T13:00:07.743 回答
17

Base64 是一种能够在只允许打印字符的介质上表示和传输二进制数据的机制。它是“基本编码”的最流行形式,其他已知的使用是 Base16 和 Base32。

对 Base64 的需求源于需要将二进制内容附加到电子邮件中,例如图像、视频或任意二进制内容。由于 SMTP [RFC 5321] 只允许消息中包含 7 位 US-ASCII 字符,因此需要使用 7 位 ASCII 字符来表示这些二进制八位字节流……

希望这能回答问题

于 2016-05-13T02:03:46.063 回答
4

Base64 是一种或多或少紧凑的传输(实际上是编码,但目标是传输)任何类型的二进制数据的方式。

http://en.wikipedia.org/wiki/Base64

“一般规则是选择一组 64 个字符,它们既是大多数编码通用的子集的一部分,又是可打印的。”

这是一个非常普遍的目的,共同的需求是不要浪费比需要更多的空间。

从历史上看,它基于这样一个事实,即(几乎)所有编码都有一个公共子集用于将字符存储为字节,并且在简单的数据传输过程中,很多 2^8 个可能的字节有丢失或转换的风险(例如复制-粘贴-电子邮件发送-电子邮件接收-复制-粘贴序列)。

(请将投票重定向到布赖恩的评论,我只是让它更完整,希望更清楚)。

于 2012-04-25T12:51:37.600 回答