将字符串的前8个字符表示为以空格分隔的十六进制数字

leo*_*n01 1 perl

我需要将字符串的前8个字符表示为以空格分隔的十六进制数字.

例如: "这是测试!" 转换为"54 68 69 73 20 69 73 20"

我使用以下代码来完成它.在Perl中有更好(更简单)的方法吗?

my $hex = unpack( "H16", $string );

my $hexOut = "";
for ( my $i = 0 ; $i < length($hex) ; $i += 2 )
{
    $hexOut .= substr( $hex, $i, 2 ) . " ";
}
$hexOut = substr( $hexOut, 0, -1 );
Run Code Online (Sandbox Code Playgroud)

Ray*_*oal 5

我无法抗拒提交Perl单线程!

my $string = "This is a test";
print(join(' ', unpack("(A2)*", unpack( "H16", $string ))) . "\n");
Run Code Online (Sandbox Code Playgroud)

  • 是不是第二个`unpack`是不必要的?`print(join('',unpack('(H2)8',$ string)),"\n")`具有相同的输出. (2认同)