首页 新闻 会员 周边

Python写入二进制文件

0
[已解决问题] 解决于 2020-01-19 14:30

我想用python写入二进制的文件,例如字符串"abcd"写为6162 6364(十六进制),我用struct模块存储后发现struct只是把字符串转换为字节,实际写入的内容还是字符串,不是二进制序列。
我打开的方式是二进制写

怎么才会写入二进制序列(0101)呢?

心灵可视化的主页 心灵可视化 | 初学一级 | 园豆:1
提问于:2020-01-18 20:54
< >
分享
最佳答案
0

我网上找了个例子,在python 3.7.4中运行是可以的:
import struct
a_list = [33,1,1,1,4]
with open("d:\a.bin","wb") as fp:
for x in a_list:
s = struct.pack('b',x)
fp.write(s)
fp.close()
print("done")

在ultraedit下,用16进制看。结果是对的

奖励园豆:5
siwei718 | 菜鸟二级 |园豆:218 | 2020-01-18 21:03

我用sublime查看它的结果也是对的,但是它应该是一个二进制序列,如果用记事本,打开应该是乱码。我想让它保存为二进制的方便其他程序读取

心灵可视化 | 园豆:1 (初学一级) | 2020-01-18 21:11

@安卓小晨:
结果对了,不就达到目标了?
二进制其实反而不方便读取啊。

siwei718 | 园豆:218 (菜鸟二级) | 2020-01-18 21:36

@siwei718: 我需要二进制来保存特定格式的文件,我可以自定义二进制数据例如b"\xff\xff\x00\x00"写进去之后是ffff 0000,但是不知道怎么把其它类型的数据转换成这样的

心灵可视化 | 园豆:1 (初学一级) | 2020-01-18 21:39

@安卓小晨:
对于字符,转换为ascii码,比如a的ascii码是97,把97转换为2进制。
对于数字,直接转换为2进制,然后存到文件中了。

稍微麻烦点

siwei718 | 园豆:218 (菜鸟二级) | 2020-01-18 21:52

@siwei718: 好,我试试这个(ꐦ ´͈ ᗨ `͈ )

心灵可视化 | 园豆:1 (初学一级) | 2020-01-18 21:56

@siwei718: 我明白是怎么回事了,其实使用struct.pack就可以转换成二进制的形式,只不过查看的时候显示的是字符,因为我测试的时候用的是ASCII值在0~255之间的字符。我用二进制方式读取能出来结果的。
谢谢兄弟o( ̄▽ ̄)ブ

心灵可视化 | 园豆:1 (初学一级) | 2020-01-19 13:06
其他回答(1)
0
words = 'sdasdasdasdasd'
new_str = ''
for word in words:
    new_str += str(ord(word))
print(bin(int(new_str)))
小小咸鱼YwY | 园豆:3210 (老鸟四级) | 2020-01-19 09:26

谢谢兄弟,解决了

支持(0) 反对(0) 心灵可视化 | 园豆:1 (初学一级) | 2020-01-19 13:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册