メモ書きブログ

日々の覚書

リトルエンディアンと通信

ARMはバイエンディアン対応しているが、デフォルトがリトルエンディアンなせいか
通常リトルエンディアンで使うのが一般的だと思う。

この場合は、LSBファーストで例えばデータがushortで0x4031の場合、アドレス順で0x31, 0x40となる。 これに対して、通信ではビッグエンディアンでデータを送る方がモニタで見たときに解析し易いのかなーと思う。
これは、通信でやり取りするデータ自体が、16bitのWORDデータとは限らず、16bitのbit列とかもあったり、色々なケースがあるが
その場合に、ケースバイケースでエンディアンを変えていくと混乱するため、とりあえずビッグエンディアンで送っておけば
良いという明快な設計にしたいため。

ここでエンディアンの差異が生まれるので、通信データのパースはしっかり考えておかないと分からなくなる。
これは、他に通信相手が複数いる場合に特に顕著になる。