Front page | perl.beginners |
Postings from September 2009
Re: decimal to binary?
Thread Previous
|
Thread Next
From:
Chas. Owens
Date:
September 23, 2009 14:10
Subject:
Re: decimal to binary?
Message ID:
58ce48dc0909231409j51324afam52d43e4a4671088c@mail.gmail.com
On Wed, Sep 23, 2009 at 17:00, Bryan R Harris
<Bryan_R_Harris@raytheon.com> wrote:
>
>> Bryan R Harris wrote:
>>>
>>> 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 bc 93
>>> d3 (I just made up those 8 byte values).
>>>
>>> Is this easy in perl? Are long and short ints easy as well?
>>
>> $ perl -le'print unpack "H*", pack "d", -3205.0569059'
>> e626c5221d0aa9c0
>
>
> Maybe this is just my own ignorance on big-endian vs. little endian, but
> this code:
>
> print "big-endian: ", unpack("H*", pack("d", -3205.0569059)), "\n";
> print "little-endian: ", unpack("h*", pack("d", -3205.0569059)), "\n";
>
> prints:
>
> big-endian: e626c5221d0aa9c0
> little-endian: 6e625c22d1a09a0c
>
> ... when I expected the little endian to look more like:
>
> c0 a9 0a 1d 22 c5 26 e6 (spacing for readability)
>
> Did I do it wrong (i.e. is "h*" the wrong string?), or am I confused on how
> big vs. little endian works?
snip
"h*" and "H*" have nothing to do with endianness. From the docs:
h A hex string (low nybble first).
H A hex string (high nybble first).
Endianness occurs at the byte level, not the nybble level.
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
Thread Previous
|
Thread Next