一个关于大端小端的有关问题,就解惑~

一个关于大端小端的问题,就解惑~~
之前看资料,其中说到:
“涉及字符串的不用考虑byte order,字符串是一系列的byte,
比如字符串 'abcd'不管在什么机器上,都是"0x61 0x62 0x63 0x64"

只有在机器需要把多个byte合并起来表示某个值的时候,比如用四个byte表示一个int的时候, 才有byte order的区别. ”

我有个问题是:
在big-endian,低位地址存放数据的高字节,
那么,内存里面由低到高依次是: 0x61,0x62,0x63,0x64 就是abcd
在 little-endian,低位地址存放数据低字节,
那么,内存里面由低到高依次是: 0x64,0x64,0x62,0x61 那么数据最后不就是dcba了么。怎么会不管在什么机器上都是abcd呢?

我是哪里理解错了啊?

------解决方案--------------------
大端CPU读大端写的数据,当然没问题
小端同理

只有大端读取小端写的数据才会出现问题.

LZ想岔了吧
------解决方案--------------------
举个例子,小端写入0x64,0x64,0x62,0x61
读出来的也是从高往低读,读出来的自然还是a,b,c,d啦
------解决方案--------------------
大端机器 写和读都是大端
小端机器 写和读都是小端

但是大端读小端,小端读大端就有问题,这个是兼容性。跨平台写软件就需要处理
------解决方案--------------------
[code]
/**
 * @file    endian.c
 * @brief   
 */

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    union {
        unsigned int u;
        unsigned char c[4];
    } x;

    x.u = 0x01020304;
    printf("%08x\n", x.u);
    for (i = 0; i < 4; i++)
        printf("%02x", (unsigned int)(unsigned char)x.c[i]);
    printf("\n");
    return 0;
}
[/code]
小端的x86下输出
01020304
04030201
大端的POWER AIX下输出
01020304
01020304