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; }
もしかしたら、もっと良い書き方があるかもしれません。皆さんはどうやっていますでしょうか。
ごめんなさい、初掲の際ミドルエンディアンにしてしまっていました。修正しました