如何将一个整数转换为一个4字节的数组?如何将整数转换为字节数组php
这里是确切的代码我想端口(C#)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
我怎么会做在PHP中完全一样的东西?
如何将一个整数转换为一个4字节的数组?如何将整数转换为字节数组php
这里是确切的代码我想端口(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
的情况下)。这可能会或可能不会很好。
按预期工作。谢谢。 – user1392060 2012-07-18 15:39:21
$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)
}
对不起,但这似乎是错误的。正如我发布的,“123456”的正确解决方案是64,226,1,0。另外,数组必须包含4个元素。你的包含6.(整数总是4字节) – user1392060 2012-07-18 15:33:40
嗯,你是对的。 PHP在unpack()调用中将整数转换为字符串。抱歉,错误的答案。 – 2012-07-18 15:36:04
由于PHP中的字节数组相当于是一个字符串,这个会做:
$bytes = pack('L', 123456);
直观地了解,使用bin2hex
:
echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)
可能是真的。但我仍然需要数组中的单个字节。不管怎么说,还是要谢谢你。 – user1392060 2012-07-18 16:43:54
@user'echo $ bytes [0],$ byte [1],$ byte [2],$ byte [3];'PHP字符串*本质上是字节数组。 – deceze 2012-07-18 16:45:36
哦,好的!那么请原谅我的无知。现在你提到它了,我认为我可能会在PHP中使用很多东西... – user1392060 2012-07-18 17:08:02
您是否正在寻找的结果是一个包含*十进制数字* 64,226等的数组?或者你真的在寻找*字节*,在PHP中是字符串? – deceze 2012-07-18 15:36:55