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

时间:2010-10-28 11:58:30

标签: perl string hex

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

例如,我想将2001转换为“0x07”和“0xD1”。

2 个答案:

答案 0 :(得分:5)

这适用于那种情况:

($x,$y) = map { "0x$_" } 
          sprintf("%04X\n", 2001) =~ /(..)(..)/; 

但我不知道你真正想做什么。如果你想要获得UTF-16,这不是你想要的方式。

如果您正在尝试找出打包二进制数据的布局,那么您应该使用unpack。 “C4”格式适用于4字节整数。

$int = 2001;
$bint = pack("N", $int);
@octets = unpack("C4", $bint);
printf "%02X " x 4 . "\n", @octets;
# prints: 00 00 07 D1

出于某些目的,您可以使用printf的矢量打印功能:

printf "%v02X\n", pack("N", 2001);
# prints: 00.00.07.D1

printf "%v02X\n", 255.255.255.240;
# prints: FF.FF.FF.F0

答案 1 :(得分:1)

我不确定你想要它的确切格式,但转换为十六进制的一种方法是:

sprintf("%x", 2001)