9.2 エンディアンを変換 (big ⇔ little) する関数テンプレート
単純にバイト単位で順序を入れ替える関数テンプレートです。CHAR_BIT の値には依存しません。
template<class T>
T reverse_endian(T value)
{
char * first = reinterpret_cast<char*>(&value);
char* last = first + sizeof(T);
std::reverse(first, last);
return value;
}
エンディアンを反転した場合、詰め物ビットの位置が上位⇔下位に入れ替わるような場合には対応していません。また、型 T はスカラ型でなければなりません。
元ネタ
ブックナビゲーション
- 技術情報
- Boost C++ Libraries メモ
- C++と組込み環境
- C++サンプル集
- C++テンプレート集
- C++プログラマのためのC言語入門
- C/C++迷信集
- C99関数・マクロ・前処理スクリプト集
- C言語再入門
- C言語徹底入門
- Drupal メモ
- TOPPERS 情報
- ベターCとしてのC++
- マイコン メモ
- ライブラリ開発入門
- 分割コンパイルをきわめる
- 擬似プロセッサを作る
- 象の卵を探して...
- 車輪の再発明
- 過去の情報

