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