Thursday, 06 October 2005 00:34
非洲饿鱼
|
[前一页]
目录
使用SDL
字节序无关
根据当前系统的字节序,C预处理定义SDL_BYTEORDER要么定义成SDL_LIL_ENDIAN,要么是SDL_BIG_ENDIAN。
小端字节序系统写磁盘时的数据安排:
[低字节] [高字节]
大端字节序系统写磁盘时的数据安排:
[高字节] [低字节]
|
提示:
x86系统是小端字节序系统; PPC系统是大端字节序系统。 |
例程:
#include "SDL_endian.h"
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
#define SWAP16(X) (X)
#define SWAP32(X) (X)
#else
#define SWAP16(X) SDL_Swap16(X)
#define SWAP32(X) SDL_Swap32(X)
#endif
|
SDL在SDL_endian.h中定义了一些高效的宏,SDL_Swap16()和
SDL_Swap32()实现字节序的交换。另外也有从指定的字节序转换成本地系统字节序的宏。
|
提示:
尽管你需要了解系统字节序,但你并不需要所有的数据交换函数,包含 SDL_byteorder.h,而不是
SDL_endian.h |
例程:
#include "SDL_endian.h"
void ReadScanline16(FILE *file, Uint16 *scanline, int length)
{
fread(scanline, length, sizeof(Uint16), file);
if ( SDL_BYTEORDER == SDL_BIG_ENDIAN ) {
int i;
for ( i=length-1; i >= 0; --i )
scanline[i] = SDL_SwapLE16(scanline[i]);
}
}
|
[前一页]
目录
|

Last Updated ( Tuesday, 11 October 2005 06:10 )