16

整数を4バイトの配列に変換するにはどうすればよいですか?

これが私が移植したい正確なコードです(C#で)

int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}

PHPでまったく同じことをするにはどうすればよいですか?

4

3 に答える 3

22

同等の変換は

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

実際の動作をご覧ください

ただし、バイト順序(リトルエンディアン/ビッグエンディアン)はマシンアーキテクチャに依存することに注意してください(の場合も同様ですBitConverter)。それは良いかもしれないし、そうでないかもしれない。

于 2012-07-18T15:33:05.677 に答える
6

PHPのバイト配列に相当するものは文字列であるため、次のようになります。

$bytes = pack('L', 123456);

それを視覚化するには、次を使用しますbin2hex

echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)
于 2012-07-18T15:41:41.590 に答える
0
$i = 123456;
$byte_array = unpack('C*', $i);

var_dump($byte_array);
array(6) {
  [1]=>
  int(49)
  [2]=>
  int(50)
  [3]=>
  int(51)
  [4]=>
  int(52)
  [5]=>
  int(53)
  [6]=>
  int(54)
}
于 2012-07-18T15:29:50.240 に答える