2017-05-06 18 views
-1

我已經寫了一個簡單的子程序,這是應該寫:寫入二進制在FORTRAN沒有額外信息

  1. 1字節= X93(十進制147)
  2. 5個字節= ASCII STRING(numpy的)

https://pastebin.com/tbh3c57g

Subroutine write_int32_vec(filename, vec) 
    Implicit None 
    character(len=1000), intent(in)  :: filename 
    integer(4), intent(in)    :: vec(:) 

    open(unit=p_un, file=filename, form="unformatted", status="replace") 
    write (p_un) magic_num 
    write (p_un) magic_str 
    close(unit=p_un) 
End Subroutine write_int32_ve 

如果我看它在十六進制編輯器,我得到如下:

01 00 00 00 93 01 00 00 00 05 00 00 00 4E 55 4D 50 59 05 00 00 00 

這是ASCII

�NUMPY 

看來的Fortran之前和每一個寫入命令的它的長度在一個4字節整數後寫操作。我該如何解決這個問題?

回答

-1

原來

open(unit=p_un, file=filename, form="BINARY") 

的伎倆。可悲的是,這似乎只適用於偷竊,但不是gfortran。

+6

使用'access =「stream」'。許多問題和答案在這裏提供。 –