我正在尝试将变量 $num
转换为其反向字节顺序并将其打印出来:
my $num = 0x5514ddb7;
my $s = pack('I!',$num);
print "$s\n";
它打印为一些不可打印的字符,在十六进制编辑器中它看起来是正确的,但是如何在控制台上读取它?我已经试过了:
print sprintf("%#x\n",$s);
这使得 perl 提示非数字参数,所以我认为
pack
返回一个字符串。任何想法如何基于 0xb7dd1455
在控制台上打印 $num
?
最佳答案
您需要使用 unpack
:
my $num = 0x5514ddb7;
my $s = pack('I<!',$num);
my $x = unpack('I>!',$s);
printf("%#x\n",$x);
来自 Michael Carman 的评论:请注意字节顺序修饰符(
<
和 >
)需要 Perl v5.10+。对于旧版本的 Perl,您必须改用 N
和 V
templates。
关于perl - 如何以相反的字节顺序打印变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2967230/