如何在Python 2.x中读/写二进制16位数据?

psi*_*lia 5 python binary

我必须读取和写入二进制数据,其中每个数据元素:

  • size = 2字节(16位)
  • encoding = signed 2的补码
  • endiannes =大或小(必须可选)

是否可以不使用任何外部模块?如是,

  1. 如何使用read()从二进制文件中读取这样的数据到整数数组L?
  2. 如何使用write()将整数数组L写入二进制文件?

Sve*_*ach 10

我认为你最好使用该array模块.它默认以系统字节顺序存储数据,但您可以用于array.byteswap()在字节顺序之间进行转换,并且可以sys.byteorder用来查询系统字节顺序.例:

# Create an array of 16-bit signed integers
a = array.array("h", range(10))
# Write to file in big endian order
if sys.byteorder == "little":
    a.byteswap()
with open("data", "wb") as f:
    a.tofile(f)
# Read from file again
b = array.array("h")
with open("data", "rb") as f:
    b.fromfile(f, 10)
if sys.byteorder == "little":
    b.byteswap()
Run Code Online (Sandbox Code Playgroud)