Php 打包和解包64位整数

Php 打包和解包64位整数,php,Php,我有以下代码: $packed = pack('i',PHP_INT_MAX); echo unpack('i', $packed)[1]; 结果我得到-1 我使用的是PHP5.4.6-1ubuntu1.1(cli)(构建时间:2012年11月15日01:18:34) 我的PHP_INT_MAx等于9223372036854775807 有没有办法使用pack函数和64位整数?将其另存为两个32位整数: $value = PHP_INT_MAX; $highMap = 0xffffffff00

我有以下代码:

$packed = pack('i',PHP_INT_MAX);
echo unpack('i', $packed)[1];
结果我得到
-1

我使用的是
PHP5.4.6-1ubuntu1.1(cli)(构建时间:2012年11月15日01:18:34)
我的
PHP_INT_MAx
等于
9223372036854775807


有没有办法使用
pack
函数和64位整数?

将其另存为两个32位整数:

$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; 
$value=PHP\u INT\u MAX;
$highMap=0xFFFFFF00000000;
$lowMap=0x00000000ffffffff;
$higher=($value和$highMap)>>32;
$lower=$value&$lowMap;
$packed=pack('NN',$higher,$lower);
列表($higher,$lower)=数组_值(解包($N2',$packed));

$originalValue=$higher我不确定这是否相关,因为我从未使用过
pack
,但请记住-1编码时所有位都设置为1,这也是最大无符号整数值编码。我会尝试使用一个比这个稍小的大数字,因为PHP5.6.3可以使用q/q表示64位数字,q表示有符号,q表示无符号。