Base64编码的真正目的是什么?

What is the real purpose of Base64 encoding?

为什么我们有base64编码?我是一个初学者,我真的不明白为什么要把字节混淆成其他的东西(除非它是加密的)。在我读过的一本书中,当二进制传输不可能时,base64编码是有用的。当我们邮寄表格时,它是经过编码的。但我们为什么要把字节转换成字母呢?我们不能把字节转换成中间有空格的字符串格式吗?例如,00000001 00000004?或者仅仅是没有任何空间的0000000100000004,因为字节总是以8为一对?


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

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


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

对base64的需求源于将二进制内容附加到电子邮件(如图像、视频或任意二进制内容)上的需要。由于smtp[rfc 5321]只允许在消息中使用7位us-ascii字符,因此需要使用7位ascii字符表示这些二进制八位字节流…

希望这能回答这个问题


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

参见http://en.wikipedia.org/wiki/base64

一般规则是选择一组64个字符,这两个字符都是大多数编码共用的子集的一部分,而且也是可打印的。

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

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

(请将upvote重定向到brian的评论,我只是让它更完整,希望更清楚)。