Re: [問題] BINARY檔案讀寫

看板Fortran作者 (啊哈哈~~)時間12年前 (2012/10/07 01:22), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
這狀況可能是這樣的: 你的 OPEN(27,FILE=FNAME,status='old',FORM='UNFORMATTED') 忽略了存取方式(access)的指定,所以會以預設的循序(sequential)方式讀/寫資料。 而Fortran循序檔在資料頭尾各會有著一個描述資料長度的4-bytes整數,若我寫入三個 雙精度實數,那結構會是這樣:24 雙精度實數 雙精度實數 雙精度實數 24 它的總大小會是4+8+8+8+4,每次的read/write都會對應一組頭尾的Header/Terminator, 所以若MATLAB在寫出資料時不會自動加上這樣的長度描述資料,那讀取時就會出問題。 怎麼判斷?只要計算變數大小*數量與實際檔案大小就知道有沒有其他東西在裡面了。 從你的回應來看, 我猜MATLAB應該是用串流(stream)的方式輸出資料,所以指定binary就可以正常讀取, 這用法等同於其他家編輯器的: open(27,file=FNAME,status='old',form='unformatted',access='stream') 此外,若你的資料型別都很一致(比如說都是4-bytes的整數) 那也可以指定access='direct'與recl來做隨機存取。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.36.179

10/07 02:49, , 1F
謝謝這麼詳細的回答
10/07 02:49, 1F

11/11 10:45, , 2F
推一個
11/11 10:45, 2F
文章代碼(AID): #1GS6ZXjl (Fortran)
文章代碼(AID): #1GS6ZXjl (Fortran)