我有16个字节,格式如下
short int, short int, short int, short int, unsigned int, short int, short int
当我使用unpack('SSSSLS', $data)
时,它没有返回我想要的内容。 PHP尝试使用某些格式字符串作为数组键名,如:
array(1) {
["SSSLS"]=>
int(600)
}
任何方式生成6个数字的数组,只有数字索引?
答案 0 :(得分:3)
这不是unpack的工作方式。这是正确的代码:
array_values(unpack('S4l1/Ll2/S2l3', $data));
基本上你必须将系列与/
分开,如果大于1,你必须指定一个名词。还需要一个名字,因为没有那个php会覆盖数组键。
解包的结果实际上是:
Array
(
[l11] => short 1
[l12] => short 2
[l13] => short 3
[l14] => short 4
[l2] => int
[l31] => short 5
[l32] => short 6
)
如果你没有使用名字,那将是:
Array
(
[1] => short 5
[2] => short 6
[3] => short 3
[4] => short 4
)