in reply to HEX to floating point
As to the floating point number:
my $hex = "403b8811bb1366e4"; print unpack "d", reverse pack "H*", $hex; # 27.53152055 (on x86 arch +)
but, as moritz said, binary representations of numbers are machine dependent... (except single-byte ints), so depending on the architecture that you're running this on, you may get wrong results (note that "d" is "A double-precision float in the native format"). (Update: in practice, however, most architectures these days use IEEE 754 format, so you essentially only have to figure out whether little- or big-endian representation is being used — handled by the reverse in the above snippet.)
Also, in case you're reading the data from the file in binary (not as a hex string), you of course don't need the pack "H*" part shown above.
|
|---|