Во-первых, вы должны удалить #42404
и надеяться, что ни один из следующих двоичных данных не будет числом ASCII.
$lp =~ s{^#\d+}{};
Я не уверен, что формат "Real 32", но я собираюсь догадаться, что это с плавающей запятой одинарной точности длиной 32 бита.Глядя на пакет документов .d
- это число с плавающей запятой двойной точности, то есть 64 бита.Поэтому я бы попробовал f
, что означает "одинарную точность".
@dec = unpack("f*", $lp);
Является ли ваша информация большой или младший - это проблема.d
и f
используют собственный порядок байтов вашего компьютера.Возможно, вам придется принудительно использовать порядковый номер, используя модификаторы >
и <
.
@dec = unpack("f*>", $lp); # big endian
@dec = unpack("f*<", $lp); # little endian