簡體   English   中英

打印十六進制數組排序

[英]Print hexadecimal array sorted

我有一個十六進制值數組。 我想對它們進行排序並對其進行打印。 我只將排序后的數組打印為數字項。

到目前為止的代碼是這樣的:

use strict;
use warnings;
use diagnostics;

my @numbers = ( 0x23, 0xAA, 0xaa, 0x01, 0xfB  );

my @sorted_numbers = sort { $a <=> $b } @numbers;

print @sorted_numbers;

輸出是這樣的:

135170170251

通過使用十六進制文字而不是字符串,Perl編譯器使它們變成了數字。 如果要保留字符串,請使用字符串,並使用hex獲取其數字表示形式。

#!/usr/bin/perl
use warnings;
use strict;

my @numbers = ( '0x23', '0xAA', '0xaa', '0x01', '0xfB' );

my @sorted_numbers = sort { hex $a <=> hex $b } @numbers;

print "@sorted_numbers\n";

我還用雙引號將打印結果分開。

那是因為它們是一個數字值,並且您還沒有告訴perl如何表示它們。

通常的技巧是使用printfsprintf

printf "%x" x @sorted_numbers, @sorted_numbers;

將打印:

123aaaafb

或類似的東西:

printf "%02x\n", $_ for @sorted_numbers;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM