将BitArray转换为二进制时遇ValueError错误求助
解决BitArray转二进制时的ValueError问题
你的错误根源有两个:
- 打印BitArray时输出的是带省略号的十六进制摘要(因为文件内容过长),
str(b)会包含...,这不是合法的十六进制字符,导致int()解析失败。 - 完全没必要绕“BitArray→十六进制字符串→整数→二进制字符串”的弯路,BitArray本身就提供了直接获取二进制表示的方法。
正确实现代码
from bitarray import bitarray # 用with语句管理文件句柄,避免资源泄漏 with open('test.png', 'rb') as f: b = bitarray() b.frombytes(f.read()) # 获取纯二进制字符串(不带0b前缀) binary_content = b.bin print(binary_content)
额外说明
- 如果需要带
0b前缀的二进制格式,直接拼接即可:f"0b{binary_content}" - 不要用
str(b)处理BitArray对象,它的字符串表示是给人看的摘要,不是用于程序解析的格式。
内容的提问来源于stack exchange,提问作者Pedro Carvalho
相关产品推荐
相关产品推荐

