Php 解包8字节整数

Php 解包8字节整数,php,Php,我正在尝试备份一个8字节整数,解包方式与解包以下4字节的方式相同: print_r(unpack("N", "ACD0"));//just as expected, I get 1094927408 8字节: $value = "ACD0DSAS";//I expect this to be unpacked in one 8 byte number $higher = unpack("N", substr($value, 0, 4)); $lower = unpack("N", substr

我正在尝试备份一个8字节整数,解包方式与解包以下4字节的方式相同:

print_r(unpack("N", "ACD0"));//just as expected, I get 1094927408
8字节:

$value = "ACD0DSAS";//I expect this to be unpacked in one 8 byte number
$higher = unpack("N", substr($value, 0, 4));
$lower = unpack("N", substr($value, 4, 4));
echo //the number
在PHP中有这样做的方法吗?

类似的东西

$value = "ACD0DSAS"; //I expect this to be unpacked in one 8 byte number
$higher = unpack("N", substr($value, 0, 4));
$lower = unpack("N", substr($value, 4, 4));

echo ($higher[1] << 32) + $lower[1]; // 4702677410000355667
无需打开包装:

echo hexdec(bin2hex($value)); // 4702677410000355667
// echo bindec($value); // does not work, i do not know why.

但结果将在32个系统上转换为浮动。Float可以存储最大9007199254740992值而不会丢失。

@Luka,您确定您的代码在64系统下运行吗?非常感谢它的工作!这个数字的准确性有保证吗?@Luka是的,bcmath是任意精度的数学库。另外,第一个变量可能会在64个系统上返回错误的值,因为N是无符号的,php整数总是有符号的。
echo hexdec(bin2hex($value)); // 4702677410000355667
// echo bindec($value); // does not work, i do not know why.