我有以下代码:
$packed = pack('i',PHP_INT_MAX); echo unpack('i',$packed)[1];
结果我得到-1
我正在使用PHP 5.4.6-1ubuntu1.1(cli)(内置:2012年11月15日01:18:34)
我的PHP_INT_MAx等于9223372036854775807
有没有办法使用pack函数和64位整数?
改为将其保存为两个32位:
原文链接:https://www.f2er.com/php/135377.html$value = PHP_INT_MAX; $highMap = 0xffffffff00000000; $lowMap = 0x00000000ffffffff; $higher = ($value & $highMap) >>32; $lower = $value & $lowMap; $packed = pack('NN',$higher,$lower); list($higher,$lower) = array_values(unpack('N2',$packed)); $originalValue = $higher << 32 | $lower;
>算法取自:http://php.net/pack#109328
>示例:http://codepad.viper-7.com/UuLmor