获取数组的十六进制值

时间:2020-09-16 13:19:50

标签: arrays perl hex

这是我的Perl代码的部分

    my $start= @list[0];
    my @Type=@list[1,2];
    my @ID =@list[6,5,4,3];
    my $date=@list[10,9,8,7];

十进制是我通过从二进制文件中读取数据来填充的列表,我想根据其受尊重的格式 @decimal 将数据保存到输出文件中,以开始十六进制表示 @Type @ID ,以及 yyy.mm.dd 表示 @date < / strong>。

我已经调查过了,但是我只能找到的是:

my $hex = sprintf("0x%X", $d);

我没必要将其用于数组。我也找不到太多有关Perl中日期和时间格式的信息。你能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

您说:

一开始我有严格的警告提示

但这是您的代码的简单测试版本:

#!/usr/bin/perl

use strict; use warnings;

my @list = (1 .. 10);

my $start= @list[0];
my @Type=(@list[1], @list[2]);
my @ID =(@list[6], @list[5], @list[4], @list[3]);
my $date=(@list[10], @list[9], @list[8], @list[7]);

运行该命令时,会收到以下警告列表:

Useless use of array slice in void context at list line 11.
Useless use of array slice in void context at list line 11.
Useless use of array slice in void context at list line 11.
Scalar value @list[0] better written as $list[0] at list line 8.
Scalar value @list[1] better written as $list[1] at list line 9.
Scalar value @list[2] better written as $list[2] at list line 9.
Scalar value @list[6] better written as $list[6] at list line 10.
Scalar value @list[5] better written as $list[5] at list line 10.
Scalar value @list[4] better written as $list[4] at list line 10.
Scalar value @list[3] better written as $list[3] at list line 10.
Scalar value @list[10] better written as $list[10] at list line 11.
Scalar value @list[9] better written as $list[9] at list line 11.
Scalar value @list[8] better written as $list[8] at list line 11.
Scalar value @list[7] better written as $list[7] at list line 11.

所以这不是您的实际代码,您也不在乎要求别人帮助您处理充满错误的代码。

答案 1 :(得分:2)

map函数对于将操作应用于数组的所有元素很有用。

@hexType = map { sprintf("0x%x",$_) } @Type;
@hexID = map { sprintf("0x%x",$_) } @ID;