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

问题描述 投票:0回答:1

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

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

BigInt(parseInt('something', 36))

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

BigInt(parseInt('somethink', 36))

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

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

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

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

[我知道,整数的安全表示存在限制,这就是为什么我使用BigInt的原因,没有限制。

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

javascript parseint bigint string-conversion base36
1个回答
0
投票

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

var digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

...基数为36的数字...

var digits = '0123456789abcdefghijklmnopqrstuvwxyz';

希望这有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.