如何在Perl中将包含十六进制的字符串转换为十六进制?

时间:2012-07-04 09:04:49

标签: string perl hex

例如,我有一个字符串"\x80\x81\x82.abc\x00",然后它应该转换为十六进制8081822e61626300。请问如何在Perl中做到这一点?

2 个答案:

答案 0 :(得分:3)

你有字符串 "\x80\x81\x82.abc\x00" '\x80\x81\x82.abc\x00' 吗?

选项1:

my $text = "\x80\x81\x82.abc\x00";
$text = unpack "H*", $text;
print $text;

选项2:

my $text = '\x80\x81\x82.abc\x00';
$text =~ s/\\x([a-zA-Z\d]{2})/{chr hex $1}/ge;
$text = unpack "H*", $text;
print $text;

答案 1 :(得分:0)

unpack 'H*'可能是最佳解决方案:

$ perlsh
eval: unpack "H*", "\x80\x81\x82.abc\x00"
'8081822e61626300'