目次 - 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などのビッグエンディアンである.

## 関数

1. SDL_Swap16
2. SDL_Swap32
3. SDL_Swap64
4. SDL_SwapBE16
5. SDL_SwapBE32
6. SDL_SwapBE64
7. SDL_SwapFloat
8. SDL_SwapFloatBE
9. SDL_SwapFloatLE
10. SDL_SwapLE16
11. SDL_SwapLE32
12. SDL_SwapLE64

## SDL Wikiへのリンク

Byte Order and Byte Swapping - SDL Wiki