我经常听到人们谈论“64进制编码”。它的用途是什么?
当前回答
这是一种二进制数据的文本编码,其结果文本除了字母、数字和符号“+”、“/”和“=”之外什么都没有。这是一种在专门用于文本数据的媒体上存储/传输二进制数据的方便方法。
但为什么是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编码方案,这些数据需要通过设计用于处理文本数据的媒体存储和传输。这是为了确保数据在传输过程中保持完整而不被修改”(Wiki, 2017)
示例可能如下:您有一个只接受ASCII字符的web服务。你想要保存用户的数据,然后将其传输到其他位置(API),但接收者想要接收未触及的数据。Base64是用来…唯一的缺点是base64编码需要比常规字符串多33%的空间。
另一个示例::uenc = url encoded = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http://loc.querytip.com/asics-men-s-gel-kayano-xii.html。
正如你所看到的,如果我们想把最后一次访问的URL作为参数发送,我们就不能把字符“/”放在URL中,因为我们会打破“MOD重写”- GET参数的属性/值规则。
一个完整的例子是:" http://loc.querytip.com/checkout/cart/add/uenc/http://loc.magento.com/asics-men-s-gel-kayano-xii.html/product/93/ "
大多数情况下,我看到它被用于在只能处理ascii或简单字符集的上下文中对二进制数据进行编码。
它用于将任意二进制数据转换为ASCII文本。
例如,电子邮件附件就是通过这种方式发送的。
有些传输协议只允许传输字母数字字符。想象一下这样一种情况:控制字符用于触发特殊操作,或者每个字符只支持有限的位宽。Base64将任何输入转换为只使用字母数字字符、+、/和=作为填充字符的编码。
Base-64编码是一种获取二进制数据并将其转换为文本的方法,这样就更容易在电子邮件和HTML表单数据中传输。
http://en.wikipedia.org/wiki/Base64
推荐文章
- Base64长度计算?
- “\d”在正则表达式中是数字吗?
- 使用Javascript的atob解码base64不能正确解码utf-8字符串
- 尝试将一个非属性列表对象设置为NSUserDefaults
- 如何将base64编码的映像保存到磁盘?
- 如何将Base64字符串转换为位图图像,以显示在一个ImageView?
- 用base64编码图像文件
- 如何在iOS上进行base64编码?
- URL方案/主机/路径中的“+”是否代表空格?
- HTML编码问题-显示“”字符而不是“ ”
- 在HTML中,我可以用✓做一个复选标记;. 有相应的x标记吗?
- 有人知道如何解码和编码Base64中的字符串使用Base64吗?
- 在UIImage和Base64字符串之间转换
- 如何检查一个字符串是否被Base64编码
- 如何保存一个PNG图像服务器端,从base64数据URI