我尝试将结构写入文件,然后我发现它的字节序与内存中的字节序不同。
一些测试代码:
void show_hex(unsigned char *p, int n)
{
for (int i=0; i<n;i++){
printf("%02X ",p[i]);
}
}
int main()
{
FILE *fp = fopen("as","w");
struct X{
int x,y;
};
struct X *p = malloc( sizeof(struct X));
p->x = 0xFFEECCAA;
p->y = 0xFFAADD;
show_hex((unsigned char *) p, sizeof(struct X));
fwrite(p, sizeof(struct X), 1, fp);
fclose(fp);
int f = open("as2",O_WRONLY);
write(f, p, sizeof(struct X));
close(f);
return 0;
}
问题出来了:AA CC EE FF DD AA FF 00 //我知道那是小端
tyw@um08:~/pro|master⚡ ⇒ hexdump as
0000000 ccaa ffee aadd 00ff
0000008
tyw@um08:~/pro|master⚡ ⇒ hexdump as2
0000000 ccaa ffee aadd 00ff
0000008
所以endin是不同的。