我在 PHP 中创建了一个 crc32,需要将它存储在 MySQL 数据库的一个字段中。在阅读了关于 32 位和 64 位机器上的结果的担忧之后,我想知道应该如何存储这个数字。这就是我在 PHP 中处理 crc32 以在任一位大小机器上获得相同结果的方式:
<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
// On a 32-bit system it prints -2103228862 instead of
// 2191738434 which is correct and what prints on a 64-bit system.
// See the php.net manual page on crc32 for more information about
// 32-bit vs 64-bit.
echo "checksum without printf formatting: " . $checksum . "\n";
printf("%u\n", $checksum);
$string = sprintf("%u", $checksum);
echo $string . "\n";
?>
输出(在 64 位机器上是):
checksum without printf formatting: 2191738434
2191738434
2191738434
这个数字应该如何存储在 MySQL 上?以下是我到目前为止提出的一些选择:
`hash1` CHAR(10) NOT NULL ,
`hash2` varchar(32) NOT NULL,
`hash3` int unsigned NOT NULL,
看起来我应该去:
`hash4` BIGINT UNSIGNED NOT NULL ,