目次 - API(機能別) - バイト順と交換
バイト順と交換
インクルードファイル: SDL_endian.h
概要
ここにはエンディアンを扱う関数が分類されている.
整数や浮動小数点のような単純な型も複数のバイトで構成されている.
例えば, 32bit整数(Sint32)は4バイト(それぞれのバイトは8bit)使われている.
エンディアンとはシステムがこの値をメモリ上にどのような順序で格納しているかを表している.
エンディアンは2つ - ビッグとリトルがある.
- SDL_LIL_ENDIANのバイト順は1234で, 下位の桁の数字が先頭に来る
- SDL_BIG_ENDIANのバイト順は4321で, 上位の桁の数字が先頭に来る
例: 32bit整数の10進数で16,909,060という数を考える. これは16進数では0x01020304である.
0x01が最上位バイト(最も大きな桁の値)で, 0x04が最下位バイト(最も小さな桁の値)である.
もしリトルエンディアンのシステムならば, 最下位バイトを先頭にメモリに格納される. 生成されるバイト順は:
0x04 0x03 0x02 0x01
もしビッグエンディアンのシステムならば, 最上位バイトを先頭にメモリに格納される. 生成されるバイト順は:
0x01 0x02 0x03 0x04
エンディアンのさらに詳しい説明はWikipedia(英語)(日本語)のこの記事を参照すること.
SDL_BYTEORDERはコンパイル時のバイト順を表すマクロである.
- SDL_BYTEORDERがSDL_LIL_ENDIANならばバイト順はx86やx64などのリトルエンディアンである.
- SDL_BYTEORDERがSDL_BIG_ENDIANならばバイト順はPowerPCなどのビッグエンディアンである.
関数
- SDL_Swap16 - 16bit値のバイト順を交換する
- SDL_Swap32 - 32bit値のバイト順を交換する
- SDL_Swap64 - 64bit値のバイト順を交換する
- SDL_SwapBE16 - 16bitビッグエンディアンの値のバイト順を現在の環境のバイト順にする
- SDL_SwapBE32 - 32bitビッグエンディアンの値のバイト順を現在の環境のバイト順にする
- SDL_SwapBE64 - 64bitビッグエンディアンの値のバイト順を現在の環境のバイト順にする
- SDL_SwapFloat - 浮動小数点の値のバイト順を交換する
- SDL_SwapFloatBE - ビッグエンディアンの浮動小数点の値のバイト順を現在の環境のバイト順にする
- SDL_SwapFloatLE - リトルエンディアンの浮動小数点の値のバイト順を現在の環境のバイト順にする
- SDL_SwapLE16 - 16bitリトルエンディアンの値のバイト順を現在の環境のバイト順にする
- SDL_SwapLE32 - 32bitリトルエンディアンの値のバイト順を現在の環境のバイト順にする
- SDL_SwapLE64 - 64bitリトルエンディアンの値のバイト順を現在の環境のバイト順にする
SDL Wikiへのリンク
Byte Order and Byte Swapping - SDL Wiki