バイナリデータを扱う通信のプログラムを作るとき、場合によってはバイトオーダの変換が必要になります。
しかし!!バイトオーダやその変換について調べてもつまりどういうことか説明しているサイトが見つかりませんでした(調べ方が悪いだけかも)
なので、この記事ではバイトオーダの変換ってつまるところ何をどうするのか?について詳しい説明はすべて省いて簡単にまとめたいと思います。
前提条件
以下の知識があることを前提に書いていきます。なので以下の項目については触れません(なんとなく理解してればOK)
- ビット(bit)、バイト(byte)の知識
- アドレスの概念
- メモリ(主記憶装置)
- 2進数、10進数、16進数
バイトオーダについて
バイトオーダとは、データ(メモリ上に展開されてるもの)の並び順のことです。
エンディアンとも言います。
環境(CPU)によって変わります。
バイトオーダは以下の2種類があります。
リトルエンディアン
データをメモリに展開した時に逆順で格納されます。

ビッグエンディアン
データをメモリに展開した時にそのままの順番で格納されます。

バイトオーダの変換
バイトオーダの変換はそのままの意味で、バイト配列の並び順を変換します。
エンディアン変換とも言います。
バイトオーダの変換は以下の2パターンあります。
- リトルエンディアン⇒ビッグエンディアン
- ビッグエンディアン⇒リトルエンディアン
上記2種類のうちどちらであろうとも、変換は以下のようになります。
2バイトの場合
1バイト単位で順番を入れ替えます。

4バイトの場合
同じように1バイト単位で順番を入れ替えます。

変換バイト数が増えてもやることは「1バイト単位で順番を入れ替える」です。
参考サイト
Byte swapping(エンディアン変換)を理解する – Qiita