Python 使用什么字节序写入文件?

e-n*_*uri 3 python binary endianness

当使用带有 'wb' 标志的 file.write() 时,Python 使用大端或小端,还是 sys.byteorder 值?我怎么能确定字节序不是随机的,我问是因为我在同一个文件中混合了 ASCII 和二进制数据,对于二进制数据,我使用 struct.pack() 并将其强制为小端,但我不是确定 ASCII 数据会发生什么!

编辑 1:自投反对票以来,我将解释更多我的问题!

我正在用 ASCII 和二进制数据编写一个文件,在 x86 PC 中,该文件将通过网络发送到另一台不是 x86 的 PowerPC 计算机,女巫是大端,我怎么能确定数据用 PowerPC 解析时会一样吗?

编辑 2:仍在使用 Python 2.7

woo*_*oot 6

对于多字节数据,它默认遵循机器的架构。如果你需要它跨平台工作,那么你会想要强制它。

ASCII 和 UTF-8 被编码为每个字符一个字节,那么它是否受字节顺序的影响?不。

以下是打包小端<>大端的方法:

import struct

struct.pack('<L', 1234)
'\xd2\x04\x00\x00'

struct.pack('>L', 1234)
'\x00\x00\x04\xd2'
Run Code Online (Sandbox Code Playgroud)

如果您使用 UTF-16,您还可以通过这种方式将字符串编码为大端或小端,例如:

s.encode('utf-16LE')
s.encode('utf-16BE')
Run Code Online (Sandbox Code Playgroud)

UTF-8、ASCII 没有字节序,因为它是每个字符 1 个字节。