JavaScript:parseInt(string,36)将不同的字符串转换为相同的数字

我在字符串转换方面遇到了问题:

像这样使用parseInt(string[,radix])时:

BigInt(parseInt('something',36))

它输出:80920602611116n。像这样输入不同:

BigInt(parseInt('somethink',36))

它输出:80920602611120n,这当然是其他内容。

但是,如果它是一个较长的字符串,则输出数字有时是相同的:

BigInt(parseInt('thisisactuallyadifferentsomething',36))
BigInt(parseInt('thisisactuallyadifferentsomethink',36))

这将为两者输出1867697451648055638757226289961051507749359223570432n,尽管它们是不同的。

我知道整数的安全表示形式有一个限制,这就是为什么我使用BigInt的原因,没有限制。

在使用BigInt表示这些字符串时,我必须能够区分此大小的字符串。

yiqwer 回答:JavaScript:parseInt(string,36)将不同的字符串转换为相同的数字

请参见encode a big integer to base62,但替换下面的62个基数...

var digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

...以36位为底数的数字...

var digits = '0123456789abcdefghijklmnopqrstuvwxyz';

希望这对您有帮助...

本文链接:https://www.f2er.com/2399346.html

大家都在问