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

Nik*_*nri 4 perl

我有一个包含一些整数的数组,我想将其转换为十六进制格式的字符串。这是我使用的代码,并且运行良好。我只是想知道是否有更简单的方法来做到这一点。

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
Run Code Online (Sandbox Code Playgroud)

too*_*lic 5

地图。如果您不需要它做其他任何事情,这可以避免使用中间数组变量。

my $string = join '', map { sprintf '%02x', $_ } get_tw();
Run Code Online (Sandbox Code Playgroud)

完整示例:

use warnings;
use strict;

sub get_tw { return 8 .. 15 }

my $string = join '', map { sprintf '%02x', $_ } get_tw();
print "$string\n";
Run Code Online (Sandbox Code Playgroud)

输出:

08090a0b0c0d0e0f
Run Code Online (Sandbox Code Playgroud)


Pie*_*rre 5

使用打包/解包:

my $string = join '', unpack('H*', pack('c*',@arr)); 
Run Code Online (Sandbox Code Playgroud)