7

整数をバイト配列に変換するコードを見たことがあります。以下は、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になります

誰かがこれで私を助けることができますか?私は大きな助けになるでしょう。よろしくお願いします。

4

3 に答える 3

11

数学の問題のように扱ってみませんか?

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

于 2012-10-02T02:56:33.970 に答える
4

PHP で署名付きの 4 バイト値を取得するには、次のようにする必要があります。

$temp = ($ar[0]<<24) + ($ar[1]<<16) + ($ar[2]<<8) + ($ar[3]);
if($temp > 2147483648)
     $temp -= 4294967296;
于 2014-03-05T03:57:33.763 に答える
4

L は 4 バイトの長さなので、配列の要素数がわかります。したがって、逆の操作を簡単に実行できます。

$ar = [64,226,1,0];
$i = unpack("L",pack("C*",$ar[3],$ar[2],$ar[1],$ar[0]));
于 2012-10-02T02:43:30.763 に答える