这适用于这种情况:
($x,$y) = map { "0x$_" }
sprintf("%04X\n", 2001) =~ /(..)(..)/;
Run Code Online (Sandbox Code Playgroud)
但我想知道你真正想要做什么.如果你想要获得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
Run Code Online (Sandbox Code Playgroud)
出于某些目的,您可以使用printf矢量打印功能:
printf "%v02X\n", pack("N", 2001);
# prints: 00.00.07.D1
printf "%v02X\n", 255.255.255.240;
# prints: FF.FF.FF.F0
Run Code Online (Sandbox Code Playgroud)