PHP 包含多个不同长度的值

PHP pack with multiple values with different lengths

我想打包一个由 64 位、32 位和 32 位整数组成的字符串。 我对 pack 函数(或所有位)没有太多经验,所以我正在尝试做这样的事情:

pack('JNN', 1, 2, 3);
// and
unpack('JNN');

但这并没有产生我想要的结果。

问题是,当我 运行 我收到以下代码时:

array [
  "NN" => 1
]

但我预料到了这一点:

array [
  1,
  2,
  3
]

知道如何解决这个问题吗?

提前致谢,

pack 创建一个 16 个字符的字符串。

$str = pack('JNN', 1, 2, 3);
//string(16) "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03"

解包需要格式元素的密钥。示例:

$arr = unpack('Jint64/N2int32_',$str);
/*
array (
  'int64' => 1,
  'int32_1' => 2,
  'int32_2' => 3,
)
*/

有关更多示例,请参阅 PHP 手册中的 Unpack

如果需要纯数字键,可以使用array_values函数