正在将数字列表转换为二进制文件



我在Python中有一个很长的大数字列表,格式为

[429996711.2753906, 106845465.30664062, 47285925.673828125, 373352395.4082031, 934463030.1191406, 53994183.962890625, 455503649.6542969, 741004174.1660156, 725379998.9648438, 485329924.8046875, 16476769.255859375,...]

例如。我需要将每个数字从十进制转换为二进制,然后将这些二进制数字保存到一个没有CRLF行结尾的原始二进制文件中。有人能说出怎么做吗?我在任何地方都找不到有用的答案。谢谢

这个片段创建了一个88字节的文件data.bin(11个字节,每个字节是8个字节的两倍(:

import struct
data = [429996711.2753906, 106845465.30664062,
47285925.673828125, 373352395.4082031,
934463030.1191406, 53994183.962890625,
455503649.6542969, 741004174.1660156,
725379998.9648438, 485329924.8046875,
16476769.255859375]
packed = map(lambda i: struct.pack("@d", i), data)
with open("data.bin", "wb") as fh:
for i in packed:
fh.write(i)
  1. 将小数转换为字节数组或类似的-请参阅将浮点转换为字节阵列的SO线程

  2. 以二进制模式将字节数组写入文件-在open()函数中使用"wb"模式将文件标记为二进制文件,正如本SO线程中关于如何将int的字节数组写入二进制文件所讨论的那样。

# make file
newFile = open("filename.txt", "wb")
# write to file
newFile.write(myBytearray)

最新更新