Python 将二进制字符串数据写入文件出现了16进制的0D 数字 5

我有一串很长的二进制的字符串,现在要将这个转换成二进制数字写入到文件:字符串为:data_string=‘00001010000101001011110111001010... 我有一串很长的二进制的字符串,现在要将这个转换成二进制数字写入到文件:
字符串为:data_string=‘00001010000101001011110111001010......’
代码为:
但是这个data_string有长度限制,不能一次性写入很多的二进制数据,有没有什么简单方法一次性将这些二进制数据写入到文件
ee2=int(data_string,2)
parsedata_id2 = struct.pack(">L",ee2)
file_data.write(parsedata_id2)
标题写错了,问题是如何一次性将很长的二进制字符串转换成二进制数据写入到文件
展开
 我来答
woaihouzhuang
推荐于2018-04-05 · TA获得超过259个赞
知道小有建树答主
回答量:245
采纳率:100%
帮助的人:227万
展开全部
如果不能一次性写入,那就分块。
假设data_string 最大长度为MAX_LENGTH ,则只需要将你需要写入的二进制字符串分块,每块大小为MAX_LENGTH,然后循环写入,即可。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kwydwuf
2015-04-14 · TA获得超过7411个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2009万
展开全部

conv 函数要求 data_string 长度一定是8的倍数(每8个bit组成一个byte)。用 conv 得到的数据就可以直接写入文件了(open 文件时按照二进制打开)。


def conv(data):
    assert (len(data) % 8) == 0, "Invalid binary string data"
    fmt = ">{}B".format(len(data) / 8)
    bytes = [int(data[x:x+8],2) for x in range(0, len(data), 8)]
    return struct.pack(fmt, *bytes)
    
    
# test:
>>> conv("000101010101010100001000010011110000001100001101")
'\x15U\x08O\x03\r'
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式