PHP pack:不是很懂

PHP pack: do not really understand

我发布了这个 (),发现我有两个问题。 所以这里又只有一个问题(我解决了另一个问题)希望这很容易理解: 我想使用 PHP pack() 函数。 1)我的目标是将任何整数信息转换为长度为 2 字节的十六进制。 示例:0d37 --> 0x0025

2) 第二个目标是切换每个值的高/低字节:0x0025 --> 0x2500 3) 输入的值很多,会形成12-Bytes的二进制数据。

谁能帮帮我?

您只需在 pack() manual page 中查找 table 格式,这非常简单。

2个字节表示16位,或者也叫一个"short"。我假设你想要那个无符号的......所以我们得到 n 大端(高)和 v 小端(低)字节顺序。

唯一可能棘手的部分是弄清楚如何组合格式和参数,因为每个格式字符都与一个值参数相关联:

bin2hex(pack('nv', 34, 34)) // returns 00222200

如果您需要可变数量的值,则需要解包(PHP 语言功能,不要与 unpack() 混淆):

$format = 'nv';
$values = [34, 34];
pack($format, ... $values); // does the same thing

或者,如果您的所有值都应使用相同的格式打包,您可以这样做:

pack('v*', $values); // will "pack" as many short integers as you want