For example I would like to convert 2001 into: "0x07", "0xD1"
Thanks
For example I would like to convert 2001 into: "0x07", "0xD1"
Thanks
I'm not sure what exact format you want it in, but one way to convert to hex is:
sprintf("%x", 2001)
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