javascript - 如何在没有库或模块的普通 JS 中从 base-36 转换为 base-62
问题描述
我正在寻找一个可以转换 base-36 数字的 JS 脚本,例如:
23SQJ1LNEFSL00H18IVWABMP
到一个 base-62 数字,如:
1rZmfPo0xtnf8CLTfWRJh
我正在尝试翻译这个 python 代码来做到这一点。
转换器.pyBASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
def encode(num, alphabet=BASE62):
"""Encode a positive number in Base X
Arguments:
- `num`: The number to encode
- `alphabet`: The alphabet to use for encoding
"""
if num == 0:
return alphabet[0]
arr = []
base = len(alphabet)
while num:
num, rem = divmod(num, base)
arr.append(alphabet[rem])
arr.reverse()
return ''.join(arr)
我怎样才能做到这一点?
解决方案
这会将 base-10 转换为 base-62 https://helloacm.com/base62/
// https://helloacm.com
// https://rot47.net
// base62.js
// provides conversion between base10 and base62
var Base62 = (function(){
var table = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function _to10(num)
{
var limit = num.length;
var res = 0;
for (var i = 0; i < limit; i ++)
{
res = 62 * res + table.indexOf(num.charAt(i));
}
return res;
}
function _toBase(num)
{
var r = num % 62;
var res = table.charAt(r);
var q = Math.floor(num / 62);
while (q)
{
r = q % 62;
q = Math.floor(q / 62);
res = table.charAt(r) + res;
}
return res;
}
return {
FromBase10: function()
{
var r = [];
for (var i = 0; i < arguments.length; i ++)
{
var num = parseInt(arguments[i]);
r.push(_toBase(num));
}
return r;
},
FromBase62: function()
{
var r = [];
for (var i = 0; i < arguments.length; i ++)
{
var num = arguments[i].toString();
if (num.length)
{
r.push(_to10(num));
}
}
return r;
}
}
})();
推荐阅读
- r - 如何在 R markdown 中“明确地”保留一个表
- python - 我不能用 dict 替换列值
- eclipse - Eclipse IDE:在工作集中按文件名过滤文件
- java - 为什么我们不能增加 asList() 返回的 ArrayList 对象的大小?
- java - 如何在 Java 中以特定方式对 JSON 列号进行排序
- node.js - 部署后如何解决heroku中的page not found错误
- python - 使用模式 coverage-reports/coverage.xml 未找到 sonar.python.coverage.reportPaths 的报告
- android - 两行约束布局
- python - 当我试图通过 BeautifulSoup 获取它时,它变成空的
我正在尝试从网站解析表格
https://www.kp.ru/best/kazan/abiturient_2018/ivmit/
。Chrome 的 DevTools 向我展示了该表:<div class="t431__table-wapper" data-auto-correct-mobile-width="false"> <tab
- python - .csv 加载重复每个单元格中一列中的所有条目