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
我发布了这个 (
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