在PHP中如何将整数转换为字节数组

18

如何将一个整数转换为4个字节的数组?

以下是我想要移植的确切代码(使用C#)

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

我该如何在PHP中做完全相同的事情?


1
你是想要一个包含十进制数64、226等的数组作为结果吗?还是实际上你需要字节,而在PHP中它将会是一个字符串? - deceze
2个回答

24

等效的转换是

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

点击查看演示

然而,您需要注意字节顺序(小端 / 大端)取决于机器架构(如同 BitConverter)。这可能会是好或不好的。


6

在PHP中,字节数组的等价物是字符串,因此可以使用以下代码:

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

为了可视化,使用bin2hex函数:
echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)

可能是真的。但我仍然需要在数组中使用单个字节。无论如何,谢谢。 - user1392060
@user echo $bytes[0], $byte[1], $byte[2], $byte[3]; PHP字符串本质上就是字节数组。 - deceze
哦,好的!那我道歉我的无知。既然你提到了,我想我在 PHP 中可能过于复杂化了很多事情... - user1392060
如果您想在数组中使用单个字节,可以尝试使用 str_split($bytes) - FluorescentGreen5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接