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
#!/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;
Comments
-
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?