[英]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如何表示它們。
通常的技巧是使用printf
或sprintf
:
printf "%x" x @sorted_numbers, @sorted_numbers;
將打印:
123aaaafb
或類似的東西:
printf "%02x\n", $_ for @sorted_numbers;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.