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

标签 python binary endianness

当使用带有 '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/

相关文章:

用于原始文件流元数据的字节序感知读取的 C++ 库?

python - 使用 Daphne 在 DEBUG 模式下运行 Django

python - python pandas 如果在过去 N 天内满足条件则创建一个新列

java - 我不明白 Java 中二进制数的行为

java - 用数学方法计算十进制到二进制(java)

c++ - 与 ARM Neon vtbx 的字节序混淆

c++ - 如何在 C++ 中将 Big/Little-Endian 字节转换为整数,反之亦然

python - keycloak api 用户创建

python - 如何将 AES 与 GAE python 一起使用?

python - 如何使用Python正确编码/解码Excel文件?