我正在尝试将变量$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.