>>>>> "BRH" == Bryan R Harris <bryan_r_har...@raytheon.com> writes:

  >> From: Uri Guttman
  >> 
  >>>>>>>> "BM" == Bob McConnell <r...@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

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to