有关Base64编码的问题

时间:2019-12-11 21:39:34

标签: encoding base64 urlencode tobase64string base64url

我有3个关于base64的问题:

1)base64编码的目的是二进制到文本。文本不是要以二进制形式通过网络发送吗?那有什么好处呢?

2)过去他们使用7位通信系统,现在是8位。那为什么我们现在仍然使用它呢?

3)如何增加尺寸?我只用28位元的3个位元组,然后将它们重新排列为4位元组的6位元,但总的还是28位元?

1 个答案:

答案 0 :(得分:1)

1)目的不仅是二进制编码到文本编码,还用于编码使用超出标准7位ASCII码的特定字符集/代码页的文本。对于二进制数据,您还会遇到某些值导致问题的问题。当通过电子邮件或HTTP请求的一部分进行传输时,数据中的值0可以解释为文本的结尾。在接收方,前0之后的所有内容都可能被“忘记”,并且数据将被破坏。 Base64编码通过将所有字符编码为64个字符的子集来避免所有可能的问题,这些字符与实际代码页无关,并且不包含任何控制字符。

  

文本不是要以二进制形式通过网络发送吗?

在幕后,一切都是二进制的,无论是文本,图片,电影还是执行的代码,在存储器和处理器寄存器中都是一堆零和一。

2)参见1)

3)3个字节是3 * 8位= 24位信息。 A base 64 character just represents 6 bits,因此您需要4个base64字符4 * 6位= 24位来对信息进行编码。但是这些base64字符是正常的8位字符,因此实际上这4个base64字符占据4 * 8位= 32位的空间。增长了33%。