作者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
1F:→ LPH66:那如果型别大小要有像这样portability要用什麽资料型态? 08/01 10:45
2F:→ LPH66:难道都要用char去凑吗? 08/01 10:48
3F:推 HalfLucifer:Use typedef & #ifdef 08/02 15:11
4F:→ sdk:有很多人写过这类的preprocessor header..可以估一下.. 08/06 22:45