为什么我们有Base64编码?我是一个初学者,我真的不明白为什么你会把字节混淆成别的东西(除非是加密)。在其中一本书中,我读到Base64编码在无法进行二进制传输时非常有用。例如。当我们发布表单时,它会被编码。但为什么我们将字节转换成字母?我们难道不能将字节转换为字符串格式,中间有空格吗?例如,00000001 00000004
?或者只是0000000100000004
没有任何空格,因为字节总是以8对的形式出现?
答案 0 :(得分:80)
Base64是一种将二进制数据编码为几乎每个计算机系统都知道的ASCII字符集的方法,以便在不丢失或修改内容本身的情况下传输数据。 例如,邮件系统无法处理二进制数据,因为它们需要ASCII(文本)数据。因此,如果您想传输图像或其他文件,由于它处理数据的方式,它会被破坏。
注意:base64编码不是加密的方式,也不是压缩数据的方法。事实上,base64编码的数据片段比原始数据片段大1.333倍。这只是一种确保在传输过程中不会丢失或修改数据的方法。
答案 1 :(得分:8)
Base64是一种机制,可以在仅允许打印字符的介质上表示和传输二进制数据。它是“基本编码”的最流行形式,其他已知的使用的是Base16和Base32。
对Base64的需求源于需要将二进制内容附加到电子邮件,如图像,视频或任意二进制内容。由于SMTP [RFC 5321]仅允许消息中包含7位US-ASCII字符,因此需要使用7位ASCII字符表示这些二进制八位字节流...
希望这回答问题
答案 2 :(得分:3)
Base64是一种或多或少的传输方式(实际上编码,但目的在于传输)任何类型的二进制数据。
请参阅http://en.wikipedia.org/wiki/Base64
“一般规则是选择一组64个字符,这些字符既是大多数编码共有的子集的一部分,也是可打印的。”
这是一个非常普遍的目的,共同的需要是不要浪费更多的空间。
从历史上看,它基于这样一个事实:用于将字符存储到字节中的(几乎)所有编码的公共子集,并且在简单数据传输期间很多2 ^ 8个可能的字节存在丢失或转换的风险(例如copy-paste-emailsend-emailreceive-copy-paste sequence。)。
(请将upvote重定向到Brian的评论,我只是让它更完整,希望更清楚)。