【发布时间】:2023-04-16 04:20:02
【问题描述】:
我在 php 中使用 bcmod 和 gmp_mod 函数来处理大量数字。
这很好用:
// large number must be string
$n = "10000000000000000000001";
$y = 1025;
$c = 1025;
// Both works the same (also tested in python)
$y = gmp_mod( (bcpowmod($y, 2, $n) + $c) , $n);
$y = bcmod ( (bcpowmod($y, 2, $n) + $c) , $n);
但输入 $n 不是静态的。所以我必须使用 type cast 像:
$n = (string)10000000000000000000001;
这不再起作用了。
for gmp 给出这个错误:
gmp_mod(): Unable to convert variable to GMP - string is not an integer
关于bc,给我这个错误:
bcmod(): Division by zero
问题是,(string) 无法将其转换为字符串。有什么想法吗?
编辑:我找到了解决方案here,但输入仍然是字符串:
$bigint = gmp_init("9999999999999999999");
$bigint_string = gmp_strval($bigint);
var_dump($bigint_string);
【问题讨论】: