[英]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.