如何在Perl中以十六进制的形式将十进制数$d = 1024
转换为0xFF?
需要将d
变量分配给另一个变量并进行打印,因此为了便于阅读,我要求它采用十六进制格式。
答案 0 :(得分:42)
答案 1 :(得分:24)
警告:sprintf
溢出 2 64 10 19 ,32位甚至已经只有2 32 ≅4×10 9 。
对于大数字,启用词汇编译指示bigint
。 Math::BigInt
中记录了as_hex
。
use bigint;
my $n = 2**65;
print $n->as_hex; # '0x20000000000000000'
答案 2 :(得分:1)
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);