1

是否有快速简单的方法来对以“字符串”形式给出的 64 位整数(例如“1bed658e4cbba3a7”)进行“%”操作?

我知道谷歌闭包库有这样的功能,但我不想使用任何外部库,而且在内部它作为三个操作(除法、乘法和减法)工作,似乎不是最优的。

补充:问题是 JavaScript 不能在不丢失精度的情况下处理 64 位整数。有关详细信息,请参阅此问题

4

1 回答 1

2

如果右侧操作数有上限,则可以将 64 位 int 拆分为两部分,并从中计算模数。(这是 3% 的操作,我不知道这对于您的目的是否足够快)。

例如,如果要计算 x % c,且 c < 2^32,则可以将 x 拆分为 a 和 b 两部分,并计算:

(a * 2^32 + b) % c = (((a % c)* (2^32 % c)) + b) % c

不过,这取决于 c 是否很小。如果它也接近 64 位,那么您将需要寻找其他方法。

于 2012-11-12T21:52:15.520 回答