手动Base62编码出错求助:求正确编码步骤
你的Base62编码错误分析与正确方法
你犯的错误
- ASCII值写错:把'H'的ASCII值写成了99(这是'c'的ASCII值),正确的'H'对应72。
- 混淆编码逻辑:误用了Base64的6位分组补位方式,但Base62和Base64是完全不同的编码体系——Base62不需要分组补位,核心逻辑是将字节序列转换为大整数,再将整数转成62进制。
- 无效补位:Base62没有类似Base64的补位规则,你手动补的
xx属于错误操作。 - 字符对应错误:你的二进制分组到Base62字符的映射不符合常规规则,且分组方式本身就不适用于Base62编码。
正确的Base62编码步骤(以"Hi"为例)
常规Base62字符表规则:
- 索引0-9 →
0-9 - 索引10-35 →
A-Z - 索引36-61 →
a-z
转字节序列:
'H'对应ASCII值72,'i'对应105,得到字节序列[72, 105]转十进制大整数(按大端字节序,高位在前计算):
72 × 256 + 105 = 18537十进制转62进制:
反复除以62取余数,余数对应字符索引,最后将余数倒序排列:- 18537 ÷ 62 = 298,余数61 → 对应字符
z - 298 ÷ 62 = 4,余数50 → 对应字符
o(a是索引36,第15个小写字母o对应索引36+14=50) - 4 ÷ 62 = 0,余数4 → 对应字符
4
倒序余数得到最终编码:
4oz- 18537 ÷ 62 = 298,余数61 → 对应字符
内容的提问来源于stack exchange,提问作者Tyler
相关产品推荐
相关产品推荐

