Base64如何转为ASCII字符?
How does Base64 convert to ASCII characters?
我正在阅读 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)。
最后一步我没看懂。引用文章:
These numbers are converted to ASCII characters in the second step
using the Base64 encoding table. The 6-bit values of our example
translate to the ASCII sequence "m6Lp".
当我查看 the ASCII Table 时,我不明白这是怎么回事。使用每列左侧的小数列和每列右侧的字符列,我会将 [38, 58, 11 41] 翻译为 ["&", ":", "VT"(垂直标签), ”)”]。即使我使用左侧十进制列(即十六进制列)之外的另一列,我仍然没有得到预期的结果。
我看到屏幕底部的 table,其中 "m" 明显与 38 相关。但是这个 table 与官方 ASCII table 有很大不同州。
我认为问题是我对 ASCII 转换不熟悉,而不是文章中的不准确,那么我做错了什么?
更新:它们是两个不同的 table。我问这个问题时的错误是假设转换为 ASCII 意味着使用 ASCII 转换 table,而实际上存在不同的 table(Base64 转换 table,这就是文章中的内容描绘)。
你没有做错任何事。文章中用于将二进制代码转换为字符的 Table 与您的 table 不同。
您可以使用这个不错的工具重新检查它:https://www.rapidtables.com/code/text/ascii-table.html
我正在阅读 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)。
最后一步我没看懂。引用文章:
These numbers are converted to ASCII characters in the second step using the Base64 encoding table. The 6-bit values of our example translate to the ASCII sequence "m6Lp".
当我查看 the ASCII Table 时,我不明白这是怎么回事。使用每列左侧的小数列和每列右侧的字符列,我会将 [38, 58, 11 41] 翻译为 ["&", ":", "VT"(垂直标签), ”)”]。即使我使用左侧十进制列(即十六进制列)之外的另一列,我仍然没有得到预期的结果。
我看到屏幕底部的 table,其中 "m" 明显与 38 相关。但是这个 table 与官方 ASCII table 有很大不同州。
我认为问题是我对 ASCII 转换不熟悉,而不是文章中的不准确,那么我做错了什么?
更新:它们是两个不同的 table。我问这个问题时的错误是假设转换为 ASCII 意味着使用 ASCII 转换 table,而实际上存在不同的 table(Base64 转换 table,这就是文章中的内容描绘)。
你没有做错任何事。文章中用于将二进制代码转换为字符的 Table 与您的 table 不同。
您可以使用这个不错的工具重新检查它:https://www.rapidtables.com/code/text/ascii-table.html