为什么为 SPARC ISA 编译的程序读取整数的方式与在 Pentium ISA 上不同?
Why would a program compiled for a SPARC ISA read an integer differently than on a Pentium ISA?
为 SPARC ISA 编译的程序将 32 位无符号整数 0xABCDEF01 写入文件,并正确读回。为 Pentium ISA 编译的相同程序也能正常工作。但是,在传输文件时,程序错误地将文件中的整数读取为 0x01EFCDAB。出了什么问题?
SPARC 和 Pentium 在内存和存储中使用不同的字节顺序 ("endianness"):
- SPARC 使用 big-endian:整数的最高有效字节在前
- Pentium 使用little-endian:整数的最低有效字节在前
即当文件传输到具有不同字节序的机器时,整数的字节似乎是相反的顺序。
为 SPARC ISA 编译的程序将 32 位无符号整数 0xABCDEF01 写入文件,并正确读回。为 Pentium ISA 编译的相同程序也能正常工作。但是,在传输文件时,程序错误地将文件中的整数读取为 0x01EFCDAB。出了什么问题?
SPARC 和 Pentium 在内存和存储中使用不同的字节顺序 ("endianness"):
- SPARC 使用 big-endian:整数的最高有效字节在前
- Pentium 使用little-endian:整数的最低有效字节在前
即当文件传输到具有不同字节序的机器时,整数的字节似乎是相反的顺序。