我有一个十六进制值数组。我想对它们进行排序并将它们打印出来。我只将排序的数组打印为数字项。
到目前为止的代码是:
use strict;
use warnings;
use diagnostics;
my @numbers = ( 0x23, 0xAA, 0xaa, 0x01, 0xfB );
my @sorted_numbers = sort { $a <=> $b } @numbers;
print @sorted_numbers;
输出就是这个:
135170170251
答案 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