交换字节 在计算领域存在两种不同的字节顺序处理方法(或者说是endian 格式)
endian 格式指定了如何在内存中存储多字节数值中的各个字节;Big-endian 的字节顺序处理方式表示存储多字节数据的时候权重最大的字节放在前面
Little-endian 的字节顺序处理方式则表示存储多字节数据的时候权重最小的字节放在前面
PowerPC 处理器使用 big-endian 的字节顺序处理方式,x86 处理器家族则使用 little-endian 的字节顺序处理方式
根据约定,多字节的数据在网络上发送的时候,使用big-endian 的字节处理方式
如果您的应用程序假定数据是某种endian 格式,而实际上数据使用的是另一种格式,则程序就会不正确地解析数据
您需要对代码中负责从磁盘或者网络读取多字节的数据(16 位,32 位,或者64 位),或者将多字节数据写入到磁盘或网络的例程进行分析,因为这些例程对于字节顺序格式相当敏感
有两个常见的处理字节顺序差别的方法:在必要的时候进行字节交换,或者使用 XML 或其它与字节顺序无关的数据格式,比如 Core Foundation 框架中的格式(CFPreferences,CFPropertyList,CFXMLParser)
采用字节交换的方法,还是使用与字节顺序无关的数据格式存储数据,取决于您在应用程序中如何使用数据
如果您需要支持某个现有的文件格式,则二进制兼容的解决方案是首先接受应用程序中已经在使用的big-endian 文件格式,然后书写字节交换代码,在x86 系统上读写文件时使用
如果不需要支持老的文件,则可以考虑重新设计文件格式,以使用 XML(extended markup language,即扩展的标志语言),XDR(external data representation,即外部数据表示),或者NSCodi