JavaScript: parseInt(string, 36) 将不同的字符串转换为相同的数字
JavaScript: parseInt(string, 36) converts different strings to same number
我遇到字符串转换问题:
像这样使用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,但替换为以下 base 62 数字...
var digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
...以 36 为基数...
var digits = '0123456789abcdefghijklmnopqrstuvwxyz';
希望这对您有所帮助...
我遇到字符串转换问题:
像这样使用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,但替换为以下 base 62 数字...
var digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
...以 36 为基数...
var digits = '0123456789abcdefghijklmnopqrstuvwxyz';
希望这对您有所帮助...