繁体   English   中英

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

[英]How do I convert a decimal number to a hex string in Perl?

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

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

这适用于这种情况:

($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

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

sprintf("%x", 2001)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM