我有 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 个数字的数组并且仅使用数字索引?
我有 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 个数字的数组并且仅使用数字索引?
这不是 unpack 的工作方式。这是正确的代码:
array_values(unpack('S4l1/Ll2/S2l3', $data));
基本上你必须用/
s 划分系列,如果高于 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
)