1

私のデータは、次のようにRuby言語を使用して解析すると、64 ビットのネットワーク バイト オーダーとしてエンコードされます。

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

my_array_of_floats = unpack_string(str)

Perl のpack / unpackを使用して同じことを行うにはどうすればよいですか?

4

1 に答える 1

7

Rubyのドキュメントを見ると、

  • mMIMEbase64エンコーディングです。
  • G倍精度のネットワーク(ビッグエンディアン)バイトオーダーです

Perlはbase64unpackを実行しませんが、MIME::Base64は実行します。

Perlunpackでは、dは倍精度です。を使用してエンディアンを指定できます>

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

>Perl5.10で導入されました。

于 2011-12-28T00:54:17.670 に答える