国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php的crc32函數使用時需要注意的問題(不然就是坑)

2024-09-04 11:42:41
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php的crc32函數使用時需要注意的問題(不然就是坑) ,需要的朋友可以參考下,前幾天寫了一個分表程序,用的hash算法是crc32.分表的函數如下:

  1. function _getHash($username
  2.     $hash = crc32($username) % 512; 
  3.     return $hash
  4. function _getTable($username
  5.     $hash = self::_getHash($username); 
  6.     return 'user_' . $hash

首先在本地32位window機上生成好數據并插入對應的表中。但是再把程序和數據傳到服務器上(64為linux),發現查不到數據。經過排查后發現,原來服務器上crc32的結果和本地不同。再查php手冊才知,crc32的接口原來和機器有關。

php手冊的描述:

Because PHP's integer type is signed many crc32 checksums will result in negative integers on 32bit platforms. On 64bit installations all crc32() results will be positive integers though.

crc32返回的結果在32位機上會產生溢出,所以結果可能為負數。而在64位機上不會溢出,所以總是正值。

CRC算法是按字長位數bit進行計算的。

crc32函數會按照php中的兩個常量參考計算 PHP_INT_SIZE,PHP_INT_MAX

這兩個常量的定義:

整型數的字長和平臺有關,盡管通常最大值是大約二十億(32 位有符號)。PHP 不支持無符號整數。Integer值的字長可以用常量PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量PHP_INT_MAX來表示。

輸出下32位中PHP_INT_SIZE:4,PHP_INT_MAX:2147483647

輸出下64位中PHP_INT_SIZE:8,PHP_INT_MAX:9223372036854775807

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吕梁市| 河津市| 福海县| 南江县| 东乡县| 勐海县| 阿尔山市| 海晏县| 两当县| 双柏县| 龙陵县| 博白县| 武山县| 印江| 克什克腾旗| 太原市| 凯里市| 邮箱| 敖汉旗| 沾化县| 永州市| 左贡县| 乌鲁木齐县| 那曲县| 奉贤区| 沁水县| 东乌珠穆沁旗| 阿荣旗| 武义县| 清新县| 永州市| 巨鹿县| 小金县| 抚宁县| 仪陇县| 马关县| 二连浩特市| 奉化市| 台东县| 工布江达县| 永宁县|