如何在php中将字节数组转换为整数?

如何在php中将字节数组转换为整数?,php,Php,我看到了一段代码,将整数转换为字节数组。下面是关于如何在PHP3中将整数转换为字节数组的代码: 但我现在的问题是如何逆转这个过程。表示从字节数组转换为整数。在上述情况下,输出将123456 有人能帮我吗。我会帮上大忙的。谢谢。因为L是四个字节长,所以您知道数组的元素数。因此,您可以简单地执行反向操作: $ar = [64,226,1,0]; $i = unpack("L",pack("C*",$ar[3],$ar[2],$ar[1],$ar[0])); 为什么不把它当作数学题来对待呢 $i=(

我看到了一段代码,将整数转换为字节数组。下面是关于如何在PHP3中将整数转换为字节数组的代码:

但我现在的问题是如何逆转这个过程。表示从字节数组转换为整数。在上述情况下,输出将123456


有人能帮我吗。我会帮上大忙的。谢谢。

因为L是四个字节长,所以您知道数组的元素数。因此,您可以简单地执行反向操作:

$ar = [64,226,1,0];
$i = unpack("L",pack("C*",$ar[3],$ar[2],$ar[1],$ar[0]));

为什么不把它当作数学题来对待呢


$i=($ar[3]要在PHP中获得有符号的4字节值,需要执行以下操作:

$temp = ($ar[0]<<24) + ($ar[1]<<16) + ($ar[2]<<8) + ($ar[3]);
if($temp > 2147483648)
     $temp -= 4294967296;

$temp=($ar[0]尝试为此键入强制转换。可能的重复是如何在PHP中将字节数组转换为浮点。哇,这解决了我的问题,但我将代码更改为:$I=($ar[4]值得一提的是,PHP的
x64
版本(Windows除外)需要此解决方法。代码中有一个错误。比较必须是
大于或等于
,而不仅仅是
大于
$ar = [64,226,1,0];
$i = unpack("L",pack("C*",$ar[3],$ar[2],$ar[1],$ar[0]));
$temp = ($ar[0]<<24) + ($ar[1]<<16) + ($ar[2]<<8) + ($ar[3]);
if($temp > 2147483648)
     $temp -= 4294967296;