2013-01-07 115 views
2

每當我需要定義一個文件結構,我使用編譯器特定的命令(如#pragma pack(1))來確保我可以安全地讀寫這個文件,而且不需要擔心填充的問題。跨平臺的文件結構處理

但是,還有其他方法可以達到同樣的目標嗎?我不需要對複雜對象進行反序列化,只需要POD類型。

+1

你在做什麼關於排序? – JasonD

+0

@JasonD - 目前:沒有。我假設小端。但是,這確實不是平臺獨立的。 – 0xbadf00d

回答

1

無法定義跨平臺的二進制格式,該格式總是很好地映射到類型的內存中表示。

定義跨平臺的文件格式有兩個選項:

  1. 使用文字
  2. 在你最喜歡什麼跨平臺的序列化庫可以提供和使用該庫轉換來定義一個二進制格式其內部和外部表示之間的文件內容。
+0

或者3.你自己做,因爲OP已經在做,但是要確保你爲自己和/或其他人「記錄」了字節順序,字體大小和順序,以便你的格式可以在其他編碼和解碼上平臺。 (我做了很多,但總是發現,對於任何複雜性或預期壽命的事情,我總是會遷移到更標準化的東西。) –

+0

@BenZotto:我不會考慮這種*跨平臺*文件格式。記錄的變量太多了。否則它使用「家釀」序列化庫。 –