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

2024-04-19 20:00:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的Python大数字列表

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

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


Tags: 文件答案列表地方结尾二进制数字crlf
2条回答

此代码段创建了一个包含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. 将小数转换为bytearray或类似格式-请参见this SO thread关于将浮点转换为bytearray的说明

  2. 以二进制模式将字节数组写入文件-在open()函数中使用“wb”模式将文件标记为二进制,如this SO thread中关于如何将整数字节数组写入二进制文件的讨论

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

相关问题 更多 >