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

时间:2012-10-02 02:37:52

标签: php

我见过将整数转换为字节数组的代码。下面是如何在php 3中将整数转换为字节数组How to convert integer to byte array in php)上的代码:

<?php

$i = 123456;
$ar = unpack("C*", pack("L", $i));

print_r($ar);
?>

上面的代码将输出:

//output:
Array
(
   [1] => 64
   [2] => 226
   [3] => 1
   [4] => 0
)

但我现在的问题是如何逆转这个过程。意味着从字节数组转换为整数。在上面的情况中,输出将 123456

任何人都可以帮助我。我会帮助很大。谢谢。

3 个答案:

答案 0 :(得分:9)

为什么不把它当成数学问题呢?

$ i =($ ar [3]&lt;&lt; 24)+($ ar [2]&lt;&lt; 16)+($ ar [1]&lt;&lt; 8)+ $ ar [0] ;

答案 1 :(得分:4)

由于L长度为四个字节,因此您知道数组的元素数量。因此您可以简单地执行相反的操作:

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

答案 2 :(得分:4)

为了在PHP中获得带符号的4字节值,您需要这样做:

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