打包/解压缩二进制数据数组

时间:2014-09-17 13:11:00

标签: perl binary integer pack

我有一个无符号整数数组(32位),我希望pack成二进制流:

my @n = (4,8,15,16,23,42);
my $foo = join('', map(pack('I', $_), @n)); # Ugly, isn't?

$foo应包含此二进制流(取决于字节顺序)

0000000 0000 0004 0000 0008 0000 000F 0000 0010
0000010 0000 0017 0000 002A

然后我想unpack二进制流回到数组。

如何使用Perl正确执行此操作,如果可能,仅使用内置模块?

1 个答案:

答案 0 :(得分:6)

你需要的只是

my $packed = pack('I*', @nums);   # unsigned int (varies in size)
my $packed = pack('L*', @nums);   # uint32_t