如何在Perl中将十进制转换为十六进制?

时间:2012-05-07 11:08:22

标签: perl

如何在Perl中以十六进制的形式将十进制数$d = 1024转换为0xFF?

需要将d变量分配给另一个变量并进行打印,因此为了便于阅读,我要求它采用十六进制格式。

4 个答案:

答案 0 :(得分:42)

十进制中的

1024不是十六进制中的0xFF。相反,它是0x400

您可以将sprintf用作:

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

答案 1 :(得分:24)

警告:sprintf 溢出 2 64 10 19 ,32位甚至已经只有2 32 ≅4×10 9

对于大数字,启用词汇编译指示bigintMath::BigInt中记录了as_hex

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

答案 2 :(得分:1)

我将这些片段放入$ PATH:

中的Perl文件中

将十进制数列表转换为十六进制和二进制

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

答案 3 :(得分:0)

您可以使用经典 printf()

printf("%x",$d);