栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python编写二进制

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python编写二进制

当您以二进制模式打开文件时,实际上就是在使用该

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

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

with open(fileName, 'br+') as f:    f.write(b'x07x08x07')

如果您有想要写为二进制的实际整数,则可以使用该

bytes
函数将整数序列转换为字节对象:

>>> lst = [7, 8, 7]>>> bytes(lst)b'x07x08x07'

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


正如Hyperboreus在评论中指出的那样,

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

def splitNumber (num):    lst = []    while num > 0:        lst.append(num & 0xFF)        num >>= 8    return lst[::-1]bytes(splitNumber(12345678901234567890))# b'xabTxa9x8cxebx1fnxd2'

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

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624278.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号