Front page | perl.beginners |
Postings from September 2009
Re: decimal to binary?
Thread Previous
From:
Uri Guttman
Date:
September 23, 2009 12:57
Subject:
Re: decimal to binary?
Message ID:
87skedsacl.fsf@quad.sysarch.com
>>>>> "BRH" == Bryan R Harris <Bryan_R_Harris@raytheon.com> writes:
>> From: Uri Guttman
>>
>>>>>>>> "BM" == Bob McConnell <rvm@CBORD.com> writes:
>>>
BM> From: Bryan R Harris
>>>>>
>>>>> I need to convert a number like this: -3205.0569059
>>>>> ... into an 8-byte double (big and little endian), e.g. 4f 3e 52
>> 00 2a
BM> bc 93
>>>>> d3 (I just made up those 8 byte values).
>>>>>
>>>>> Is this easy in perl? Are long and short ints easy as well?
>>>
BM> The sprintf() family is your friend.
>>>
>>> that will only generate text (hex and other formats). he needs pack
>>> which does exactly what he wants. read perlpacktut for a tutorial on
>>> pack/unpack and then perlfunc -f pack for the reference on it.
>>
>> That statement just confuses me. His initial value of -3205.0569059 is
>> also text. It is the human readable representation of the number, and is
>> not anything like what it looks like inside the computer. He just asked
>> for a different format for that text. Why is sprintf not a reasonable
>> way to do that?
BRH> The 8 bytes is an IEEE 754-2008 formatted number -- see here for an
BRH> explanation:
BRH> http://en.wikipedia.org/wiki/Double_precision
BRH> It's not just a simple hex of a decimal... You've got an exponent and a
BRH> sign encoded in there too.
BRH> I'm still reading the perlpacktut, but I'm hoping it'll get me to that.
pack will do it. as i said, i am doing that very thing in
Sort::Maker. it packs floats into strings for using in a string
comparison for sorting.
uri
--
.signature_stem
Thread Previous