微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python编写二进制

如何解决Python编写二进制

当您以二进制模式打开文件时,实际上就是在使用该bytes类型。因此,当您写入文件时,您需要传递一个bytes对象,而从文件中读取时,您将获得一个bytes对象。相反,以文本模式打开文件时,您正在使用str对象。

因此,写“ binary”实际上就是写一个字节字符串:

with open(fileName, 'br+') as f:
    f.write(b'\x07\x08\x07')

如果您有想要写为二进制的实际整数,则可以使用该bytes函数将整数序列转换为字节对象:

>>> lst = [7, 8, 7]
>>> bytes(lst)
b'\x07\x08\x07'

结合这些,您可以将整数序列作为字节对象写入以二进制模式打开的文件中。

正如Hyperboreus在评论中指出的那样,bytes它将只接受实际上适合一个字节的数字序列,即0到255之间的数字。如果要以任意方式存储任意(正)整数,而不必担心知道它们的确切大小(结构需要),那么您可以轻松地编写一个辅助函数,将这些数字分成单独的字节:

def splitNumber (num):
    lst = []
    while num > 0:
        lst.append(num & 0xFF)
        num >>= 8
    return lst[::-1]

bytes(splitNumber(12345678901234567890))
# b'\xabT\xa9\x8c\xeb\x1f\n\xd2'

因此,如果您有一个数字列表,则可以轻松地对其进行迭代,然后将每个数字写入文件中。如果以后要提取单个数字,则可能需要添加一些内容来跟踪哪个单个字节属于哪个数字。

with open(fileName, 'br+') as f:
    for number in numbers:
        f.write(bytes(splitNumber(number)))

解决方法

我使用python 3,我尝试将二进制文件写入使用r + b的文件。

for bit in binary:
    fileout.write(bit)

其中,binary是包含数字的列表。如何将其写入二进制文件?

最终文件必须看起来像b’x07 \ x08 \ x07 \

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。