Насколько я могу судить, 0x4025065220000000
- это 10.51235, а не 10.51200 - это было бы 0x40250624dd2f1aa0
.В любом случае, см. pack
:
$ perl -wMstrict -le 'print unpack("d>",pack("q>",0x4025065220000000))'
Hexadecimal number > 0xffffffff non-portable at -e line 1.
10.5123453140259
$ perl -wMstrict -le 'print unpack("H*",pack("d>",10.51200))'
40250624dd2f1aa0
$ perl -wMstrict -le 'print unpack("d>",pack("q>",0x40250624dd2f1aa0))'
Hexadecimal number > 0xffffffff non-portable at -e line 1.
10.512
Обратите внимание, что ваш Perl должен быть скомпилирован с поддержкой квадов для вышеупомянутого (см. Вывод perl -V
).Если вам не нравится предупреждение, вы можете использовать строки вместо:
$ perl -wMstrict -le 'print unpack("d>",pack("H*","4025065220000000"))'
10.5123453140259
$ perl -wMstrict -le 'print unpack("d>",pack("H*","40250624dd2f1aa0"))'
10.512