我有一个包含一些整数的数组,我想将其转换为十六进制格式的字符串。这是我使用的代码,并且运行良好。我只是想知道是否有更简单的方法来做到这一点。
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)
地图。如果您不需要它做其他任何事情,这可以避免使用中间数组变量。
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)
使用打包/解包:
my $string = join '', unpack('H*', pack('c*',@arr));
Run Code Online (Sandbox Code Playgroud)