我正在阅读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”(垂直制表符) ),“)”]。即使我使用除左侧十进制列之外的另一列(即Hex列),我仍然无法得到预期的结果。
我看到屏幕底部的表格,其中“m”与38明显相关。但是这个表与官方ASCII表所说的完全不同。
我认为问题是我对ASCII转换缺乏熟悉而不是文章中的不准确,所以我做错了什么?
更新:它们是两个不同的表格。在提出这个问题时我的错误是假设转换为ASCII意味着使用ASCII转换表,而实际上有一个不同的表(Base64转换表,这是文章所描述的)。
答案 0 :(得分:1)
你没有做错什么。文章中用于将二进制代码转换为字符的表与您的表不同。
您可以使用这个漂亮的工具重新检查它:https://www.rapidtables.com/code/text/ascii-table.html