如何在php中将字节数组转换为整数?
我看到了一段代码,将整数转换为字节数组。下面是关于如何在PHP3中将整数转换为字节数组的代码: 但我现在的问题是如何逆转这个过程。表示从字节数组转换为整数。在上述情况下,输出将123456如何在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=(
有人能帮我吗。我会帮上大忙的。谢谢。因为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;