更新:Salva 正确地指出我对“Q”包模板的介绍是错误的。它是 ">" 修饰符不会回到 5.8。
Perl 5.10 引入了 pack() 修饰符“>”,对于我使用“Q”的用例,它在big endian中打包了一个无符号四边形(64 位)值。
现在,我正在寻找一个有效的等价物
pack("Q>2", @ints)
其中@ints 包含两个 64 位无符号整数。“Q>2”表示“以大端字节顺序打包两个无符号四边形”。显然,我想要这个,因为我(至少暂时)绑定到 5.10 之前的 Perl。
更新2:实际上,经过进一步思考,应该做如下简单的事情:
pack("N4", $ints[0] >> 32, $ints[0], $ints[1] >> 32, $ints[1])
似乎可以在我的 64 位 x86-64 Linux 上工作。为什么这可能不完全相同pack("Q>2", @ints)
?任何特定于平台的问题?
反过来是什么(即相当于 unpack("Q>2", @ints))?