作者littleshan (我要加入劍道社!)
看板GameDesign
標題Re: [程式] 小型2D線上遊戲心得分享 : 自訂圖檔
時間Tue Aug 1 07:15:01 2006
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 61.62.3.35
: 推 StubbornLin:endian的問題@@? 那是什麼 囧 07/31 18:12
資料最小的儲存單位是 byte
而大於 1 byte 的資料就有兩種排法
比如說 0x11223344 這個數
在記憶體中可能是這樣
位址 內容
0x00 0x11 0x44
0x01 0x22 0x33
0x02 0x33 0x22
0x03 0x44 0x11
big endian little endian
使用 big endian 或 little endian 是取決於硬體架構
如果不管 endian 就直接用 fwrite 寫進檔案
那麼在另一種 endian 的機器上讀出來的結果就是錯的
: → StubbornLin:C++沒有規定阿....= =" 這點我不清楚 07/31 18:12
: → StubbornLin:因為 書上寫的long是4byte的長整數 07/31 18:13
: → StubbornLin:至於C++標準到底有沒有規定long之類的大小 07/31 18:13
: → StubbornLin:我就不知道了 = =" 至少我目前用的complier都是4bytes 07/31 18:13
: 推 doomleika:C/C++只有規定short int int long int之間的關係 07/31 18:43
所有型別的大小都是 char 的整數倍
而且 sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
在我的 compiler 上 (AMD64 上的 gcc)
long 的大小為 8 byte
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.3.35
→ LPH66:那如果型別大小要有像這樣portability要用什麼資料型態? 08/01 10:45
→ LPH66:難道都要用char去湊嗎? 08/01 10:48
推 HalfLucifer:Use typedef & #ifdef 08/02 15:11
→ sdk:有很多人寫過這類的preprocessor header..可以估一下.. 08/06 22:45