早教吧 育儿知识 作业答案 考试题库 百科 知识分享

perl编程求助,怎么把数字转换成编码?在1.txt文件中有几百行数字,数字没有规律,格式如下:72 37 25 41 2 15 6 17 2825 28 12 13 15 18 68 7 15...等等我现在要把他们转换成01编码该怎么转换?转换法则如下

题目详情
perl编程求助,怎么把数字转换成编码?
在1.txt文件中有几百行数字,数字没有规律,格式如下:
72 37 25 41 2 15 6 17 28
25 28 12 13 15 18 68 7 15
...等等
我现在要把他们转换成01编码该怎么转换?转换法则如下:
以最大数为依据,例子中最大数是72,所以编码总长72位.
于是72对应的01编码就是 000000000...1,前面71个0,第72位是1.
37对应的01编码就是 00...001...0000,前面36个0,第37是1,后面35个0
25对应的01编码就是 000...01...0000,前面24个0,第25位是1,后面47个0.
现在要把1.txt中这几百行数字都变成这种格式该怎么写代码?
▼优质解答
答案和解析
my ($max, @data);
open f1, "1.txt" or die "Can't open 1.txt";
push @data, split /\s+/, $_ while ;
close f1;
foreach ( 0..$#data ) {
$max = $data[$_] if $data[$_] > $max;
} $max--;
foreach my $e ( @data ) {
# print "$e: "; # 给你侦错用的.
for my $po( 0.. $max ) {
my $p = $po == $e-1 ? 1 : 0;
print $p;
}
print " $/"; # 分开每笔资料的格式, 随喜改动
}