【发布时间】:2018-08-07 08:39:27
【问题描述】:
我正在阅读this article on "How Base64 Encoding Works",我看到 Base64 将每组 3 个 8 位字节转换为二进制,然后将该二进制转换为 4 组 6 位。最后,将这 4 个组重新组合成整数并转换为 ASCII 字符。
给出的示例采用数字 155、162 和 233。当转换为二进制时,字符串变为“10011011 10100010 11101001”。分成 4 个大小相等的组,即“100110”、“111010”、“001011”和“101001”。接下来,协议将这些转换回整数(38、58、11 和 41)。
最后一步是我不明白的。引用文章:
这些数字在第二步转换为ASCII字符 使用 Base64 编码表。我们示例的 6 位值 转换为 ASCII 序列“m6Lp”。
当我查看the ASCII Table 时,我不明白这是怎么回事。使用每列左侧的小数列和每列右侧的字符列,我会将 [38, 58, 11 41] 转换为 ["&", ":", "VT" (垂直制表符) , ")"]。即使我使用左侧十进制列之外的另一列(即十六进制列),我仍然没有得到预期的结果。
我在屏幕底部看到了一个表格,其中“m”与 38 明显相关。但这个表格与官方 ASCII 表格的状态有很大不同。
我认为问题在于我对 ASCII 转换不熟悉,而不是文章中的不准确,那么我做错了什么?
更新:它们是两个不同的表。问这个问题时我的错误是假设转换为 ASCII 意味着使用 ASCII 转换表,而实际上有一个不同的表(Base64 转换表,这是文章所描述的)。
【问题讨论】:
-
他们使用的不是ASCII表,而是文章底部的Base64编码表。
-
@jmoerdyk 谢谢,我看到了那个表并且很困惑,因为它与官方的 ASCII 转换表不同。我假设“Base64 编码表”是文章引用官方 ASCII 表的方式,而实际上它们是两个不同的表。你的评论让我明白了。
标签: binary base64 ascii data-conversion