簡體   English   中英

如何使用Perl將文本中的浮點值轉換為二進制?

[英]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元素?

你會想看看binmodepack 這是一個可以幫助您入門的示例。 我不確定我是否選擇了您需要的包模板,但請參閱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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM