如何在Perl中将FF02500000000020更改为20000000005002FF?
我能做的是:
然后
my $num2=0xFF025000;
my $num3=0x00000020;
my $s2=pack('I!',$num2);
my $s3=pack('I!',$num3);
print unpack ("H*", "$s2") . "\n";
print unpack ("H*", "$s3") . "\n";
然后再将两部分组合在一起。
有简单的方法吗?
答案 0 :(得分:5)
print reverse split /(..)/, 'FF02500000000020';
或者,如果你喜欢标量:
$val = join '', reverse split /(..)/, 'FF02500000000020';
答案 1 :(得分:2)
这是一种方式:
$str = unpack 'H*', reverse pack 'H*', $str;
请注意,这会将十六进制字符小写,因此如果保留案例很重要,您可能希望在开头添加uc()
:
$str = uc unpack 'H*', reverse pack 'H*', $str;
答案 2 :(得分:0)
尝试转换::二进制:: C。看起来它可能会做你想要的。
答案 3 :(得分:0)
将数据转换为(单个)变量 - 将其称为$data
。然后使用(标量)reverse
。
print scalar reverse $data;
或者:
my $reversed = reverse $data;