我做了一个小python程序,从文件中读取二进制文件并将其存储到文本文件中,读取文本文件并存储二进制文件。但是,我无法让二进制文件工作...... 它读取这样的文件:
f_bin = open(bin_file,"rb")
to_bin_data = f_bin.read()
bin_data = bin(reduce(lambda x, y: 256*x+y, (ord(c) for c in to_bin_data), 0))
f_bin.close()
这个人为我工作...... Convert binary to ASCII and vice versa
类似这样的网页:http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp
编辑:我现在为它制作了一个很长的if if脚本,但感谢您的答案
答案 0 :(得分:11)
我们来一个'你好'这个词是0110100001100101011011000110110001101111
要将其转换回字符,我们可以使用chr
和int
(基数为2)和一些列表切片......
''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8))
如果我们想要'hello'并将其转换为二进制文件,我们可以使用ord
和字符串格式化...
''.join('{:08b}'.format(ord(c)) for c in 'hello')
答案 1 :(得分:2)
也许您可以使用内置函数:
>>> myString = "hello"
>>> ba = bytearray(myString)
>>> ba[0]
104
>>> bin(ba[0])
'0b1101000'
拆分0b
:
>>> bin(ba[0]).split('b')[1]
'1101000'
或
>>> bin(ba[0])[2:]
'1101000'
我希望你能用这些片段解决你的问题! :)
答案 2 :(得分:2)
我使用struct module:
import struct
buf=struct.unpack('c',to_bin_data) # for one character
buf=struct.unpack('s',to_bin_data) # for a string
编辑抱歉,误解了这个问题......这适用于二进制数据,而不适用于二进制代表字符串的字符串。