我有 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
)