我发布了这个(php pack: problems with data types and verification of my results)并发现我有两个问题。 所以这里只有一个问题(我解决了另一个问题)希望这很容易理解: 我想使用PHP pack()函数。 1)我的目标是将任何整数数字信息转换为长度为2字节的十六进制数。 示例:0d37 - > 0x0025
2)第二个目标是切换每个值的高/低字节:0x0025 - > 0x2500 3)有许多输入值将形成12字节的二进制数据。
任何人都可以帮助我吗?
答案 0 :(得分:2)
您只需在pack() manual page中查找格式表,这很容易。
2个字节表示16位,或者也称为"短"。我假设你想要那个无符号的...所以我们得到n
用于大端(高)和v
用于小端(低)字节顺序。
唯一可能棘手的部分是弄清楚如何组合格式和参数,因为每个格式字符都绑定到一个值参数:
bin2hex(pack('nv', 34, 34)) // returns 00222200
如果您需要可变数量的值,则需要进行agument解包(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