当使用带有 'wb' 标志的 file.write() 时,Python 使用大端还是小端,或者 sys.byteorder 值?我怎么能确定字节序不是随机的,我问是因为我在同一个文件中混合了 ASCII 和二进制数据,对于二进制数据,我使用 struct.pack() 并将其强制为小字节序,但我不是确保 ASCII 数据发生了什么!
编辑 1:自否决票以来,我将解释更多我的问题!
我正在写一个包含 ASCII 和二进制数据的文件,在 x86 PC 中,该文件将通过网络发送到另一台不是 x86 的计算机,而是一台 PowerPC,女巫在大端,我怎么能确定使用 PowerPC 解析时数据是否相同?
编辑 2:仍在使用 Python 2.7
最佳答案
对于多字节数据,默认遵循机器的架构。如果你需要它跨平台工作,那么你会想要强制它。
ASCII 和 UTF-8 编码为每个字符一个字节,那么它是否受字节顺序影响?没有。
这里是如何打包小<
或大>
字节序:
import struct
struct.pack('<L', 1234)
'\xd2\x04\x00\x00'
struct.pack('>L', 1234)
'\x00\x00\x04\xd2'
如果您使用的是 UTF-16,您也可以通过这种方式将字符串编码为大端或小端,例如:
s.encode('utf-16LE')
s.encode('utf-16BE')
UTF-8、ASCII 没有字节序,因为每个字符占 1 个字节。
关于python - Python 使用什么字节顺序写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831422/