0
我在php中使用bcmod和gmp_mod函数来处理大量数据。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
也不是一成不变的。所以我必须用型铸造喜欢:
$n = (string)10000000000000000000001;
这不起作用了。
为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);
我知道原因,只是寻找一个解决方案。 –
从来没有定义$ n的类型,它将始终是一个字符串...如果从...输入...你不能输入类型 –
查看解决方案 –