Я видел код, который преобразует целое число в массив байтов . Ниже приведен код о том, как преобразовать целочисленный массив в байтовый массив в php 3 ( как преобразовать целочисленное значение в массив байтов в php ):
<?php $i = 123456; $ar = unpack("C*", pack("L", $i)); print_r($ar); ?>
Вышеприведенный код выводит:
//output: Array ( [1] => 64 [2] => 226 [3] => 1 [4] => 0 )
Но сейчас моя проблема заключается в том, как обратить вспять этот процесс. Значение преобразования из массива байтов в целое . В приведенном выше примере выход будет 123456
Может ли кто-нибудь помочь мне в этом. Я бы очень помог. Спасибо заранее.
Почему бы не относиться к нему, как к математической проблеме?
$ i = ($ ar [3] << 24) + ($ ar [2] << 16) + ($ ar [1] << 8) + $ ar [0];
Поскольку L имеет длину четыре байта, вы знаете количество элементов массива. Поэтому вы можете просто выполнить операцию обратное:
$ar = [64,226,1,0]; $i = unpack("L",pack("C*",$ar[3],$ar[2],$ar[1],$ar[0]));
Чтобы получить подписанное 4-байтовое значение в PHP, вам нужно сделать следующее:
$temp = ($ar[0]<<24) + ($ar[1]<<16) + ($ar[2]<<8) + ($ar[3]); if($temp > 2147483648) $temp -= 4294967296;