Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
Keep It Simple, Stupid
 
PerlMonks  

Re: Re: Re: Hex to decimal

by Albannach (Monsignor)
on Apr 25, 2001 at 21:07 UTC ( [id://75620]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Re: Re: Hex to decimal
in thread Hex to decimal

D:\Perl\dl>perl -e "print unpack('s',pack 's', hex('ffaa'))" -86
This:
  • takes the string 'ffaa' and makes a decimal value with hex
  • packs that value into a signed short
  • unpacks that structure as a signed short
  • and prints it

--
I'd like to be able to assign to an luser

Replies are listed 'Best First'.
(tye)Re2: Hex to decimal
by tye (Sage) on Apr 25, 2001 at 21:40 UTC

    Note that pack/unpack were not useful in converting from hex to decimal (unlike most people seem to think) but were used here to convert from unsiged to signed-short.

    Also, sprintf isn't useful for converting from hex to decimal but is the proper choice for going the other direction.

    Update: Ah, thanks merlyn; I didn't think of that way to use pack/unpack to convert hex to decimal. To convert without having to worry about little-/big-endian issues gets rather complicated when using pack/unpack and signed values:

    my $hex= "FFAA"; my $signed= unpack "s", pack "S", unpack "v", pack "H*", $hex;
    and it gets even more complicated if you want to handle different numbers of hex digits:
    my $hex= "ABC"; my $unsigned= unpack "V", pack "h*", "".reverse "00000000".$hex; my $signed= unpack "l", pack "L", unpack "V", pack "h*", "".reverse( ( $hex=~/^[89a-f]/i ? "F" : "0" ) x 8 . $hex );

            - tye (but my friends call me "Tye")
Re: Re: Re: Re: Hex to decimal
by merlyn (Sage) on Apr 25, 2001 at 21:46 UTC
    You can skip the hex step with:
    perl -e 'print unpack "s", pack "H*", "ffaa"'
    If that's wrong on your system, it's an endian problem. {grin} So you can also try:
    print unpack "s", pack "h*", scalar reverse "ffaa";
    which does print -86 on my machine.

    -- Randal L. Schwartz, Perl hacker

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://75620]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.