打印十六进制数组排序

时间:2017-02-16 10:22:46

标签: arrays perl printing hex

我有一个十六进制值数组。我想对它们进行排序并将它们打印出来。我只将排序的数组打印为数字项。

到目前为止的代码是:

use strict;
use warnings;
use diagnostics;

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

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

print @sorted_numbers;

输出就是这个:

135170170251

2 个答案:

答案 0 :(得分:2)

通过使用十六进制文字,而不是字符串,您使Perl编译器将它们转换为数字。如果要保留字符串,请使用字符串,并使用sed 's/\([a-zA-Z0-9]+\)-\([a-zA-Z0-9]+\)/\1 @-@ \2/g' test.txt > test2.txt 获取其数字表示。

hex

我还在打印中加入双引号来分隔结果。

答案 1 :(得分:0)

那是因为它们是一个数值,而且你还没有告诉perl如何表示它们。

通常的做法是使用private loadMoreRows({startIndex, stopIndex}) { const {loadedRowsMap, logEntries} = this.state, indexRange = _.range(startIndex, stopIndex + 1), updatedLoadedRowsMap = {}; indexRange.forEach(i => { updatedLoadedRowsMap[i] = STATUS_LOADING; }); this.setState({ loadedRowsMap: updatedLoadedRowsMap, loading: true }); return Api.scriptLogs(null, { id: this.props.id }) .then(({body: [count, logs]}) => { indexRange.forEach(i => { updatedLoadedRowsMap[i] = STATUS_LOADED; }); const newLogs = logEntries.splice((stopIndex - startIndex + 1), 0, ...logs).toJS(); this.setState({ count, logEntries: Immutable.fromJS(newLogs), loadedRowsMap: updatedLoadedRowsMap, loading: false }); }); } printf

sprintf

将打印:

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

或类似的东西:

123aaaafb