据我了解,I
是一个格式字符的示例,它表示无符号整数,而f
用于表示浮点数
但是当我尝试将[120,3.5,255,0,100]
作为字节写入二进制文件时:
from struct import pack
int_and_float = [120,3.5,255,0,100]
with open ("bin_file.bin","wb") as f:
f.write(pack("IfIII",*bytearray(int_and_float)))
输出
TypeError:必须为整数
那么不可能将浮点数和整数作为字节存储在同一列表中吗?
答案 0 :(得分:1)
请勿传递UIViewController
。将参数直接作为参数传递:
bytearray
是 f.write(pack("IfIII", *int_and_float))
调用引发您看到的异常,您甚至在这里甚至不需要这种类型:
bytearray()
>>> int_and_float = [120,3.5,255,0,100]
>>> bytearray(int_and_float)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
接受整数(和字符串)并产生字节作为输出:
struct.pack()