0
我尝试写入一个结构到文件中,然后我发现它的endian与内存中的endian不同。为什么文件中写入结构的endian与内存中的struct不同?
一些测试代码:
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 //我知道那是小尾数
[email protected]:~/pro|master⚡ ⇒ hexdump as
0000000 ccaa ffee aadd 00ff
0000008
[email protected]:~/pro|master⚡ ⇒ hexdump as2
0000000 ccaa ffee aadd 00ff
0000008
所以,一个极端是不同的。
使用hexdump -b :) – 2013-03-14 23:05:54
您可以使用'echo 1234 | hexdump'而不是假定endian是错误的。当所有其他都失败时,'man hexdump'。 – paddy 2013-03-14 23:12:33