How can I convert a number, $d = 1024, in decimal to 0xFF in hex in Perl?
The d variable needs to be assigned to a different variable and be printed, so for readability I required it to be in hexadecimal format.
How can I convert a number, $d = 1024, in decimal to 0xFF in hex in Perl?
The d variable needs to be assigned to a different variable and be printed, so for readability I required it to be in hexadecimal format.
1024 in decimal is not 0xFF in hex. Instead, it is 0x400.
You can use sprintf as:
my $hex = sprintf("0x%X", $d); Caveat: sprintf overflows at 26419, on 32-bit even already at only 2329.
For large numbers, enable the lexical pragma bigint. as_hex is documented in Math::BigInt.
use bigint; my $n = 2**65; print $n->as_hex; # '0x20000000000000000' for ($i = 0; $i < @ARGV; $i++) { printf("%d\t= 0x%x\t= 0b%b\n", $ARGV[$i], $ARGV[$i], $ARGV[$i]); } for ($i = 0; $i < @ARGV; $i++) { $val = hex($ARGV[$i]); printf("0x%x\t= %d\t= 0b%b\n", $val, $val, $val); } for ($i = 0; $i < @ARGV; $i++) { # The binary numbers you type must start with '0b' $val = oct($ARGV[$i]); printf("0b%b\t= %d\t= 0x%x\n", $val, $val, $val); } You can use the classical printf().
printf("%x",$d);