打包/解包 - 小端 - 64 位 - 问题

Posted

技术标签:

【中文标题】打包/解包 - 小端 - 64 位 - 问题【英文标题】:pack/unpack - litle endian - 64bit - question 【发布时间】:2011-01-12 17:59:32 【问题描述】:
#!/usr/bin/env perl
use warnings;
use 5.012;

my $var = 1 << 31;
say unpack( "B*", pack( "N", $var )  );

# 10000000000000000000000000000000

我如何从

获取打包/解包
my $var = 1 << 63;

这样的输出?

# 1000000000000000000000000000000000000000000000000000000000000000

【问题讨论】:

【参考方案1】:
say unpack("B*", pack( "Q>", $var ));

&gt; 强制 Q(无符号 64 位“quad”)类型采用 big-endian 字节顺序。

【讨论】:

注意:1) Quads 仅适用于 64 位版本的 perl。 2) 字节顺序修饰符需要 Perl 5.10 或更新版本。

以上是关于打包/解包 - 小端 - 64 位 - 问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中打包/解包复杂数据

Perl 中字符串的最快校验位例程是啥?

Wolf RPG Editor之 解包与打包

Python:读取/解压缩 12 位小端压缩数据的快速方法

大端模式和小端模式

pyinstaller在64位系统下打包32位程序