How can I convert hex strings into numbers in Perl?

56,891

Solution 1

If you have

$hex_string = "0x10";

you can use:

$hex_val = hex($hex_string);

And you'll get: $hex_val == 16

hex doesn't require the "0x" at the beginning of the string. If it's missing it will still translate a hex string to a number.

You can also use oct to translate binary, octal or hex strings to numbers based on the prefix:

  • 0b - binary
  • 0 - octal
  • 0x - hex

Solution 2

See hex and/or oct.

#!/usr/bin/perl

use strict;
use warnings;

my @months = map hex, qw/x01 x02 x03 x04 x05 x06 x07 x08 x09 x0a x0b x0c/;
print "$_\n" for @months;
Share:
56,891
Chris Huang-Leaver
Author by

Chris Huang-Leaver

Clean, Clear and under control.

Updated on July 18, 2022

Comments

  • Chris Huang-Leaver
    Chris Huang-Leaver almost 2 years

    I recently wrote a script which parsed a text representation of a single binary byte month field.

    (Don't ask :-{ )

    After fiddling with sprintf for a while I gave up and did this;

    our %months = qw / x01 1 
           x02 2
           x03 3 
           x04 4 
           x05 5 
           x06 6 
           x07 7 
           x08 8 
           x09 9 
           x0a 10 
           x0b 11 
           x0c 12 /;
    ...
    my $month = $months{$text};
    

    Which I get away with, because I'm only using 12 numbers, but is there a better way of doing this?