エンディアンネス (endianness)
バイトオーダ (byte order)
0x1234ABCD という4バイトのデータ
ビッグエンディアン:
データの上位バイトからメモリに「12 34 AB CD」と並べる方式
リトルエンディアン:
データの下位バイトから「CD AB 34 12」と並べる方式
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
#include <stdio.h>
#define SWAP32(a) ((((a) & 0xff000000) >> 24) | (((a) & 0x000000ff) << 24) | \
(((a) & 0x00ff0000) >> 8) | (((a) & 0x0000ff00) << 8))
int main()
{
unsigned int indata;
unsigned int outdata;
while(1) {
printf("data(hex) = "); scanf("%x", &indata);
if(indata == 0xffffffff) { break; }
outdata = SWAP32(indata);
printf("swap = 0x%08X\n", outdata);
}
return 0;
}
0 件のコメント:
コメントを投稿