Как использовать «упаковать / распаковать» в Perl? - PullRequest
1 голос
/ 28 декабря 2011

Мои данные кодируются в 64-битном порядке сетевых байтов, когда я анализирую их с использованием языка Ruby следующим образом:

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

my_array_of_floats = unpack_string(str)

Как я могу сделать то же самое, используя Perl пакет / распаковывать

1 Ответ

7 голосов
/ 28 декабря 2011

Просмотр документации по Ruby,

  • m - это кодировка MIME base64.
  • G - это сетевой порядок байтов с двойной точностью (big-endian)

Perl unpack не делает base64 , но MIME :: Base64 делает.

В Perl unpack, d - это двойная точность. Вы можете указать порядковый номер, используя >.

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

> введено в Perl 5.10.

...