How do I convert a decimal number to a hex string in Perl?
For example, I would like to convert 2001
into "0x07" and "0xD1".
This works for that case:
($x,$y) = map { "0x$_" }
sprintf("%04X\n", 2001) =~ /(..)(..)/;
But I wonder what you're really trying to do. If you're trying to get UTF-16, this isn't the way you want to do that.
If you're trying to figure out the layout of packed binary data, then you should be using unpack
. The "C4" format would work for a 4-byte integer.
$int = 2001;
$bint = pack("N", $int);
@octets = unpack("C4", $bint);
printf "%02X " x 4 . "\n", @octets;
# prints: 00 00 07 D1
For some purposes, you can use printf
's vector print feature:
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)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.