遇到一个麻烦的php问题,想让大家帮我看看,谢谢。

柚子模板网CTO 发布于 2015/01/07 13:19
阅读 227
收藏 0
PHP

旧系统用到crc32()这个函数,本地开发的时候是32位的,现在服务器用到了64位的PHP。导致系统错误,咋办呢?有没有谁遇到过个问题呢?想让大家帮我出出主意。谢谢各位了,PHP是世界上最好的语言,但也有不少坑。

 php 函数crc32()会按照php中的两个常量参考计算 PHP_INT_SIZE,PHP_INT_MAX

输出下32位中PHP_INT_SIZE:4,PHP_INT_MAX:2147483647
输出下64位中PHP_INT_SIZE:8,PHP_INT_MAX:9223372036854775807


项目中使用crc32()函数来进行文件路径计算,原系统为32位,新系统64位,导致同一个文件的路径计算发生偏差,引起很多问题。所有需要让新系统下的计算结果和原来老系统下保持一致。 

加载中
0
leo108
leo108

自己实现一个crc32不就行了……算法都是公开的

柚子模板网CTO
柚子模板网CTO
谢谢,我也是这样想的
0
月影又无痕
月影又无痕

这个问题是存在的,比方说:crc32('a'); 在32位平台和64位平台上,输出结果分别是:

-390611389

3904355907

是因为在32位平台上整数溢出导致出现负数,处理办法也很简单,统一转成无符号整数:

sprintf('%u',crc32('a'));

柚子模板网CTO
柚子模板网CTO
原行是32位现在是64位,现在有的难道都加上负号?
返回顶部
顶部