0

我尝试将结构写入文件,然后我发现它的字节序与内存中的字节序不同。

一些测试代码:

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是不同的。

4

1 回答 1

6

文件的字节顺序与内存没有什么不同。的默认行为hexdump是将值打印为 16 位短裤。你所看到的是对记忆的不同解释。尝试hexdump -C

于 2013-03-14T23:06:00.127 回答