【问题标题】:How does Base64 convert to ASCII characters?Base64如何转换为ASCII字符?
【发布时间】: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


【解决方案1】:

你没有做错任何事。文章中用于将二进制代码转换为字符的表与您的表不同。

你可以用这个好工具重新检查它:https://www.rapidtables.com/code/text/ascii-table.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2015-11-16
    相关资源
    最近更新 更多