perl – 如何以反向字节顺序打印变量?

前端之家收集整理的这篇文章主要介绍了perl – 如何以反向字节顺序打印变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将变量$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相关文章