如何以“SSSSLSS'”的格式打开数据包。用PHP?

时间:2013-05-28 09:30:46

标签: php

我有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个数字的数组,只有数字索引?

1 个答案:

答案 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
)