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

为什么我们有Base64编码? 我是一个初学者,我真的不明白为什么你会混淆字节到别的东西(除非是encryption)。 在我读的一本书中,当二进制传输是不可能的时,Base64编码是有用的。 例如。 当我们发布表单时,它被编码。 但是,为什么我们将字节转换为字母? 难道我们不能把字节转换成string格式,而且两者之间有空格吗? 例如, 00000001 00000004 ? 或只是0000000100000004没有任何空间,因为字节总是在8对?

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

注意:base64编码不是一种encryption方式,也不是一种压缩数据的方式。 事实上,一个base64编码的数据片比原来的数据片大1.333倍。 只有在转移过程中确保没有数据丢失或修改的方法。

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

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

“一般的规则是select一组64个字符,这些字符既是大多数编码的共同子集的一部分,也是可打印的。”

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

从历史上看,这是基于这样一个事实:用于将字符存储到字节中的(几乎)所有编码都有一个共同的子集,并且在简单的数据传输过程中,大量的2 ^ 8个可能的字节存在丢失或转换的风险(例如, paste-emailsend-emailreceive-copy-paste sequence)。

(请将注意力转向Brian的评论,我只是把它做得更完整,希望更清楚)。

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

由于需要将二进制内容附加到诸如图像,video或任意二进制内容的电子邮件,因此需要Base64。 由于SMTP [RFC 5321]仅允许在消息中使用7位US-ASCII字符,因此需要使用7位ASCII字符来表示这些二进制字节stream。

希望这回答了这个问题