简体   繁体   English

如何在Perl中使用“打包”?

[英]How do I use “pack/unpack” in Perl?

My data is encoded as 64-bit network byte order when I parse it using the Ruby language as following: 当我使用Ruby语言解析数据时,我的数据被编码为64位网络字节顺序:

def unpack_string(str)
   binary = str.unpack('m*').first
   binary.unpack('G*')
end

my_array_of_floats = unpack_string(str)

How could I do the same thing using Perl's pack / unpack ? 我如何使用Perl的pack / unpack做同样的事情?

Looking at the Ruby documentation, 查看Ruby文档,

  • m is MIME base64 encoding. m是MIME base64编码。
  • G is a double-precision, network (big-endian) byte order G是双精度网络(大端)字节顺序

Perl's unpack doesn't do base64 , but MIME::Base64 does. Perl的unpack不会执行base64 ,但是MIME :: Base64会执行。

In Perl's unpack , d is a double precision. 在Perl的unpackd是双精度。 You can specify the endianness using > . 您可以使用>指定字节序。

use MIME::Base64 qw( decode_base64 );
my @nums = unpack 'd>*', decode_base64 $str;

> was introduced in Perl 5.10. >在Perl 5.10中引入。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM