我有一个带有一些整数的数组,我想将它转换为HEX值的字符串。这是我使用的代码,它工作得很好。我只是想知道是否有更简单的方法来做到这一点。
my @arr = get_tw() ; ##array of integer
for(my $i=0;$i<@arr;$i++){
$arr[$i]= sprintf('%02x',$arr[$i]); ##overwrite with the hex value
}
my $string = join('',@arr); ##build a string from a array
THX
答案 0 :(得分:4)
map。如果您不需要其他任何内容,这可以避免使用中间数组变量。
my $string = join '', map { sprintf '%02x', $_ } get_tw();
完整示例:
use warnings;
use strict;
sub get_tw { return 8 .. 15 }
my $string = join '', map { sprintf '%02x', $_ } get_tw();
print "$string\n";
__END__
08090a0b0c0d0e0f
答案 1 :(得分:4)
带有sprintf
模板的字符串重复运算符:
my $string = sprintf "%02x" x @arr, @arr
答案 2 :(得分:4)
使用pack / unpack:
my $string = join '', unpack('H*', pack('c*',@arr));