Как мне преобразовать десятичное в шестнадцатеричное в Perl?

Как я могу конвертировать число,$d = 1024в десятичном виде до 0xFF в шестнадцатеричном в Perl?

d Переменная должна быть присвоена другой переменной и напечатана, поэтому для удобства чтения я должен был иметь ее в шестнадцатеричном формате.

Ответы на вопрос(4)

Предостережение:sprintf overflows в 264 & # X2245; 1019на 32-битном даже уже на 232 & # X2245; 4 & # xD7; 109.

Для больших чисел включите лексическую прагмуbigint. as_hex задокументировано вMath::BigInt.

use bigint;
my $n = 2**65;
print $n->as_hex;   # '0x20000000000000000'

1024 в десятичной дроби нет0xFF в шестнадцатеричном виде Вместо этого это0x400.

Ты можешь использоватьSprintf как:

my $hex = sprintf("0x%X", $d);
I put these snippets into Perl files in my $PATH: Convert list of decimal numbers into hexadecimal and binary
for ($i = 0; $i < @ARGV; $i++) {
    printf("%d\t= 0x%x\t= 0b%b\n", $ARGV[$i], $ARGV[$i], $ARGV[$i]);
}
Convert list of hexadecimal numbers into decimal and binary
for ($i = 0; $i < @ARGV; $i++) {
    $val = hex($ARGV[$i]);
    printf("0x%x\t= %d\t= 0b%b\n", $val, $val, $val);
}
Convert list of binary numbers into decimal and hexadecimal
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);
}

Вы можете использовать классическийprintf().

printf("%x",$d);

ВАШ ОТВЕТ НА ВОПРОС