我在字符串转换方面遇到问题:
[像这样使用parseInt(string[,radix])
时:
BigInt(parseInt('something', 36))
它输出:80920602611116n
。像这样输入不同:
BigInt(parseInt('somethink', 36))
它输出:80920602611120n
,这当然是其他内容。
但是,如果它是一个更长的字符串,则输出数字有时是相同的:
BigInt(parseInt('thisisactuallyadifferentsomething', 36))
BigInt(parseInt('thisisactuallyadifferentsomethink', 36))
这将为两者输出1867697451648055638757226289961051507749359223570432n
,尽管它们是不同的。
[我知道,整数的安全表示存在限制,这就是为什么我使用BigInt的原因,没有限制。
在使用BigInt表示这些字符串时,我必须能够区分此大小的字符串。
请参见encode a big integer to base62,但替换下面的62位基数...
var digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
...基数为36的数字...
var digits = '0123456789abcdefghijklmnopqrstuvwxyz';
希望这有帮助...