我正在考虑在这里使用编码/解码技术(在 Ruby 中编码到基数 36/从基数 36 解码很简单)
how to implement a short url like urls in twitter?
想法是跟踪用户推荐、邀请 URL。我可以使用 Rails 进行解码,但有没有办法使用 Javascript 或 jQuery 进行编码?
最佳答案
Number
上的 toString
方法有一个可选的基数参数:
(128482).toString(36);
128482..toString(36);
128482 .toString(36);
var num = 128482; num.toString(36);
请注意,这不起作用,因为数字需要句点后的十进制数字,而不是字母:
128482.toString(36); // Syntax error
另外,你也可以用JS解码:
parseInt("2r4y", 36);
编辑:
But if I want to remove look-alike characters (1-l or 0-O) what can I do?
最简单的方法是根据要跳过的字符数来减少基数,然后进行翻译:请注意,仅使用 1-l
或 0-O
之一是一个问题,因为base36只编码小写(在这种情况下你有1-l
,但没有0-O
),你可以将其变成大写(在这种情况下,副反之亦然)。
(128482).toString(36).replace(/[m-y]/, x => String.fromCharCode(x.charCodeAt(0) + 1))
如果您想要大于 36 的基数,则必须拥有自己的基数更改函数,因为 36 是 toString
支持的最高值。在这种情况下,您可以轻松地根据需要制作自己的数字库存。
for working with long numbers?
继续吧:) 注意 n
后缀,它将数字变成 BigInt
:
1000000000000000000000000000000000000000000000000000000000n.toString(36)
// => "9edwccv83mch429oxmlxupo4z1bdaiusrm29s"
关于javascript - 是否可以使用 JavaScript/jQuery 进行 Base 36 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542726/