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

now*_*wox 2 binary perl integer pack

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

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

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

0000000 0000 0004 0000 0008 0000 000F 0000 0010
0000010 0000 0017 0000 002A
Run Code Online (Sandbox Code Playgroud)

然后我想将unpack二进制流返回一个数组.

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

ike*_*ami 6

所有你需要的是

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