32ビット値のスワップ #include<stdio.h> /* * リトルエンディアンの場合32ビット値を内部でスワップする。 * よって結果がエンディアンに左右されない。 */ int swapW(int w){ int a = 1; int n = 0; if(*(char *)&a == 1){ n += (w >> 24) & 0x000000FF; n += (w >> 8) & 0x0000FF00; n += (w << 8) & 0x00FF0000; n += (w << 24) & 0xFF000000; return n; } else{ return w; } } int main(){ int n = 1; char *pch = (char *)&n; n = swapW(n); printf("%02d ", pch[0]); printf("%02d ", pch[1]); printf("%02d ", pch[2]); printf("%02d ", pch[3]); return 0; }