【发布时间】:2017-09-22 14:40:29
【问题描述】:
当我在 32 位 PHP 系统(PHP_INT_SIZE 为 4)上调用 crc32 时,生成的整数值可能为负数。无论我是在 32 位还是 64 位系统上,如何从数字中获得正确的模值?
function checksumChar($str) {
if(PHP_INT_SIZE > 4) {
return crc32($str) % 26;
} else {
// ???
}
}
【问题讨论】:
-
问题是潜在的负数?您可以简单地在生成的 crc32() 号码上调用 abs(),然后接收提醒。
-
@AlexHG
abs的问题在于,这将在 32 位和 64 位系统上给出不同的返回值,因为例如,-137262718和4157704578与crc32("Hello")的结果相同,但是是具有不同模数的不同数字。
标签: php 32bit-64bit checksum crc32