iOSやAndroidなどは、ビックエンディアン環境のため、
リトルエンディアンでファイルなどに保存されているunsigned intの値がそのままだと使えないです。
そのため、リトルエンディアンのunsigned intをビックエンディアンにひっくり返すためのコードです。
unsigned int BGHostEndianIntegerFromLittleEndianInteger(unsigned int n) {
#ifdef __BIG_ENDIAN__
printf("%08x", n);
unsigned int ret = (n << 24) & 0xFF000000;
ret |= (n << 8) & 0x00FF0000;
ret |= (n >> 8) & 0x0000FF00;
ret |= (n >> 24) & 0x000000FF;
printf("%08x", ret);
return ret;
#endif
return n;
}
もしかしたら、もっと良い書き方があるかもしれません。皆さんはどうやっていますでしょうか。
ごめんなさい、初掲の際ミドルエンディアンにしてしまっていました。修正しました