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 回答