[英]How can I convert floating point values in text to binary using Perl?
我有文本文件看起来像这样:
float a[10] = {
7.100000e+000 ,
9.100000e+000 ,
2.100000e+000 ,
1.100000e+000 ,
8.200000e+000 ,
7.220000e+000 ,
7.220000e+000 ,
7.222000e+000 ,
1.120000e+000 ,
1.987600e+000
};
unsigned int col_ind[10] = {
1 ,
4 ,
3 ,
4 ,
5 ,
2 ,
3 ,
4 ,
1 ,
5
};
现在,我想将每个数组(float / unsigned int)转换为不同的二进制文件 - 大端类型,所有浮点值的二进制文件和所有整数值的二进制文件。
在Perl中使用它的简单方法是什么,考虑到每个数组中有超过两个millon元素?
你会想看看binmode
和pack
。 这是一个可以帮助您入门的示例。 我不确定我是否选择了您需要的包模板,但请参阅pack
文档以了解所有选项。
use strict;
use warnings;
my ($fh, $pack_template);
while (my $line = <>){
if ( $line =~ /(float|int)/ ){
$pack_template = $1 eq 'int' ? 'i' : 'f';
undef $fh;
open $fh, '>', "$1.dat" or die $!;
binmode $fh;
next;
}
next unless $line =~ /\d/;
$line =~ s/[,\s]+$//;
print $fh pack($pack_template, $line);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.