在Perl中将32位整数转换为16位浮点

时间:2016-06-24 02:40:22

标签: perl

我是Perl的新手,我参加了考试:

  1. 创建一个包含100个32位整数的二进制文件

  2. 将整数转换为16位浮点并保存在新的二进制文件中

  3. 将512字节标题添加到新文件中并打印新文件的内容(标题除外)

  4. 我的老师说我的convertIntegerToFloat子程序使用了太多内存,并且printContentExceptHeader功能不安全。请告诉我为什么?

    my $name_file = 'binary';
    
    
    sub convertIntegerToFloat {
    
        open( DATA,  "<$name_file" . "\.bin" ) or die "Couldn't open file\n";
    
        open( DATA2, "+>>Float_file.bin" )     or die "Couldn't creat fiel\n";
        binmode DATA2;
    
        while ( <DATA> ) {
            print DATA2 pack( "f*", unpack( "I*", $_ ) );
        }
    
        close(DATA);
        close(DATA2);
    
        unlink("$name_file\.bin");
    
        rename( "Float_file\.bin", "$name_file\.bin" );
    
        print "Convert succsess\n";
    }
    
    
    sub printContentExceptHeader {
    
        open( DATA, "<$name_file\.bin" ) or die "Couldn't open $name_file\.bin";
        seek( DATA, 512, 0 );
    
        while ( <DATA> ) {
            print unpack( "I*", $_ );
        }
    
        close(DATA);
    
        print "\n";
    }
    

0 个答案:

没有答案