perl 将整数数组转换为十六进制字符串

ezykj2lf  于 2023-06-06  发布在  Perl
关注(0)|答案(3)|浏览(405)

我有一个数组与一些整数,我想把它转换成一个字符串在十六进制格式。这是我使用的代码,它工作正常。我只是想知道是否有更简单的方法来做到这一点。

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
e7arh2l6

e7arh2l61#

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";

输出:

08090a0b0c0d0e0f
cig3rfwq

cig3rfwq2#

使用pack/unpack:

my $string = join '', unpack('H*', pack('c*',@arr));
68de4m5k

68de4m5k3#

使用sprintf模板的字符串重复操作符:

my $string = sprintf "%02x" x @arr, @arr

相关问题