我有一个无符号整数数组(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正确执行此操作,如果可能,仅使用内置模块?
答案 0 :(得分:6)
你需要的只是
my $packed = pack('I*', @nums); # unsigned int (varies in size)
my $packed = pack('L*', @nums); # uint32_t