Re: [問題] 不同compiler的type問題...

看板MacDev作者 (WLOG)時間16年前 (2009/03/08 09:10), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《moonjustin (快點放長假吧@@)》之銘言: : 請問一下, : 如果今天使用VC++存了一些int,float,char到檔案裡,(windows) : 然後我用xcode讀出來(mac os) : 會不會有數字錯掉的問題? : 手邊沒有mac沒辦法試XD : 謝謝。 請問你「存」的方法是什麼呢?類似fwrite(fp, &someIntVar, sizeof(someIntVar) ) 這樣? 除了endian問題, 還要小心某些型別如bool是compiler-dependent型別。 另外,如果你是存struct,依照compiler與機器,欄位之間會有padding, 要記得下pragma去設定你要的alignment。 一般說來,要交換資料,就算再同一個平台上面, 都應該要用有規範的格式。 如果不想自己設計規範,而且不介意明文的資料格式, XML, JSON, YAML在兩個作業系統上應該都有好用的library。 windows上MSXML還不算太難用。 如果要寫的資料量非常大,擔心XML太不精簡, 那可以直接用sqlite3/berkley db這類可攜帶db檔的簡單database library, 好用又方便。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.133.149

03/08 15:17, , 1F
目前是打算用fwrite去存int,float資料,然後希望能在
03/08 15:17, 1F

03/08 15:18, , 2F
windows and mac 都能讀進來
03/08 15:18, 2F

03/09 12:18, , 3F
或者先變成特定byte order 吧, 例如利用 htons/htonl
03/09 12:18, 3F

03/10 23:29, , 4F
如果endian考慮好,寫到binary stream應該不會有問題...
03/10 23:29, 4F
文章代碼(AID): #19iniSxK (MacDev)
討論串 (同標題文章)
文章代碼(AID): #19iniSxK (MacDev)