作者malkhut (WLOG)
看板MacDev
標題Re: [問題] 不同compiler的type問題...
時間Sun Mar 8 09:10:51 2009
※ 引述《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
1F:推 moonjustin:目前是打算用fwrite去存int,float資料,然後希望能在 03/08 15:17
2F:→ moonjustin:windows and mac 都能讀進來 03/08 15:18
3F:→ adrianshum:或者先變成特定byte order 吧, 例如利用 htons/htonl 03/09 12:18
4F:→ malkhut:如果endian考慮好,寫到binary stream應該不會有問題... 03/10 23:29