我经常听到人们谈论“64进制编码”。它的用途是什么?
当前回答
它基本上是一种用ASCII文本编码任意二进制数据的方法。每3个字节的数据需要4个字符,最后可能还会有一些填充。
基本上,输入的每6位都用64个字符的字母表进行编码。“标准”字母表使用a-z, a-z, 0-9和+和/,用=作为填充字符。有url安全的变体。
维基百科是一个相当好的信息来源。
其他回答
它基本上是一种用ASCII文本编码任意二进制数据的方法。每3个字节的数据需要4个字符,最后可能还会有一些填充。
基本上,输入的每6位都用64个字符的字母表进行编码。“标准”字母表使用a-z, a-z, 0-9和+和/,用=作为填充字符。有url安全的变体。
维基百科是一个相当好的信息来源。
在计算机的早期,当电话线系统间的通信不是特别可靠时,一种快速而肮脏的验证数据完整性的方法被使用:“位奇偶校验”。在这种方法中,传输的每个字节都有7位数据,第8位将是1或0,以强制字节中1位的总数为偶数。
因此,0x01将作为0x81传输;0x02将是0x82;0x03仍然是0x03等等。
为了进一步完善这个系统,当定义ASCII字符集时,只有00-7F被分配字符。(直到今天,所有设置在80-FF范围内的字符都是非标准的)
当时的许多路由器都把奇偶校验和字节转换放在硬件中,迫使连接到它们的计算机严格处理7位数据。这迫使电子邮件附件(以及所有其他数据,这就是为什么HTTP和SMTP协议是基于文本的)转换为纯文本格式。
这些路由器很少能活到90年代。我非常怀疑它们中任何一个现在还在使用。
大多数情况下,我看到它被用于在只能处理ascii或简单字符集的上下文中对二进制数据进行编码。
这是一种二进制数据的文本编码,其结果文本除了字母、数字和符号“+”、“/”和“=”之外什么都没有。这是一种在专门用于文本数据的媒体上存储/传输二进制数据的方便方法。
但为什么是Base-64?将二进制数据转换为文本的两种替代方法是:
Decimal:将每个字节的十进制值存储为三个数字:045 112 101 037等,其中每个字节由3个字节表示。数据膨胀了三倍。 十六进制:将字节存储为十六进制对:AC 47 0D 1A等,其中每个字节由2个字节表示。数据膨胀了两倍。
Base-64在4个字符中映射3个字节(8 x 3 = 24位),该字符横跨6位(6 x 4 = 24位)。结果看起来像“TWFuIGlzIGRpc3Rpb…”。因此膨胀仅仅是原来的4/3 = 1.3333333倍。
base64是一个二进制到文本的编码方案,以ASCII字符串格式表示二进制数据。Base64被设计用来跨通道传输二进制格式的数据。它接受任何形式的数据并将其转换为纯文本的长字符串。以前我们不能传输大量的数据,如文件,因为它是由2⁸比特字节组成的,但我们的实际网络使用2⁷比特字节。这就是base64编码出现的原因。但是base64到底是什么意思呢?
让我们来理解base64的含义。
base64 = base+64
我们可以调用base64作为基数64的表示。Base64仅使用6位(2 = 64个字符)来确保可打印的数据是人类可读的。但是,如何?我们也可以写base65或base78,但为什么只写64呢?让我们证明一下。 Base64编码包含64个字符来编码任何字符串。 base64包含:
10数值即,0,1,2,3,.....9。
26大写字母,即A,B,C,D,.......Z。
26个小写字母,即a,b,c,d,........z。
两个特殊字符,即+,/。取决于你的操作系统。
base64算法遵循的步骤如下:
count the number of characters in a String. If it is not multiple of 3 pad with special character i.e., = to make it multiple of 3. Encode the string in ASCII format. Now, it will convert the ASCII to binary format 8-bit each. After converting to binary format, it will divide binary data into chunks of 6-bits each. The chunks of 6-bit binary data will now be converted to decimal number format. Using the base64 Index Table, the decimals will be again converted to a string according to the table format. Finally, we will get the encoded version of our input string.
推荐文章
- 可能增加的最坏的空间使用量是多少?
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 我如何确定文件编码在OS X?
- Base64长度计算?
- “\d”在正则表达式中是数字吗?
- 使用Javascript的atob解码base64不能正确解码utf-8字符串
- 尝试将一个非属性列表对象设置为NSUserDefaults
- 如何将base64编码的映像保存到磁盘?
- 如何将Base64字符串转换为位图图像,以显示在一个ImageView?
- 用base64编码图像文件
- 如何在iOS上进行base64编码?
- URL方案/主机/路径中的“+”是否代表空格?
- HTML编码问题-显示“”字符而不是“ ”
- 在HTML中,我可以用✓做一个复选标记;. 有相应的x标记吗?
- 有人知道如何解码和编码Base64中的字符串使用Base64吗?