web-dev-qa-db-fra.com

Comment convertir décimal en hexadécimal en Perl?

Comment puis-je convertir un nombre, $d = 1024, en décimal à 0xFF en hexadécimal en Perl?

La variable d doit être affectée à une variable différente et être imprimée, donc pour la lisibilité, j'ai exigé qu'elle soit au format hexadécimal.

25
Alisha

1024 en décimal n'est pas 0xFF en hex. Au lieu de cela, c'est 0x400.

Vous pouvez utiliser sprintf comme:

my $hex = sprintf("0x%X", $d);
43
codaddict

Avertissement: sprintf débordements à 264 ≅ 1019, sur 32 bits même déjà à seulement 232 ≅ 4 × 109.

Pour les grands nombres, activez le pragma lexical bigint . as_hex est documenté dans Math::BigInt.

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

J'ai mis ces extraits dans des fichiers Perl dans mon $ PATH:

Convertir la liste des nombres décimaux en hexadécimaux et binaires

for ($i = 0; $i < @ARGV; $i++) {
    printf("%d\t= 0x%x\t= 0b%b\n", $ARGV[$i], $ARGV[$i], $ARGV[$i]);
}

Convertir la liste des nombres hexadécimaux en décimaux et binaires

for ($i = 0; $i < @ARGV; $i++) {
    $val = hex($ARGV[$i]);
    printf("0x%x\t= %d\t= 0b%b\n", $val, $val, $val);
}

Convertir la liste des nombres binaires en décimal et hexadécimal

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);
}
1
CodyChan

Vous pouvez utiliser le classique printf ().

printf("%x",$d);
0
tuxuday