整数を4バイトの配列に変換するにはどうすればよいですか?
これが私が移植したい正確なコードです(C#で)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
PHPでまったく同じことをするにはどうすればよいですか?
同等の変換は
$i = 123456;
$ar = unpack("C*", pack("L", $i));
ただし、バイト順序(リトルエンディアン/ビッグエンディアン)はマシンアーキテクチャに依存することに注意してください(の場合も同様ですBitConverter
)。それは良いかもしれないし、そうでないかもしれない。
PHPのバイト配列に相当するものは文字列であるため、次のようになります。
$bytes = pack('L', 123456);
それを視覚化するには、次を使用しますbin2hex
。
echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 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)
}