0

我有 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 个数字的数组并且仅使用数字索引?

4

1 回答 1

3

这不是 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
)
于 2013-05-28T09:59:45.270 回答