如何在python中将二进制字符串转换为ascii字符串?

use*_*729 6 python binary ascii

我做了一个小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()
Run Code Online (Sandbox Code Playgroud)

这个对我不起作用... 将二进制转换为ASCII,反之亦然

像这样的网页:http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp

编辑:我现在为它做了一个很长的if else脚本,但感谢你的答案

Jon*_*nts 11

我们接受"你好"这个词 0110100001100101011011000110110001101111

把这一回字符,我们可以使用chrint(以2为基础)和一些列表切片...

''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8))
Run Code Online (Sandbox Code Playgroud)

如果我们想要'hello'并将其转换为二进制,我们可以使用ord和字符串格式化...

''.join('{:08b}'.format(ord(c)) for c in 'hello')
Run Code Online (Sandbox Code Playgroud)


The*_*ius 3

也许你可以使用内置函数:

>>> myString = "hello"
>>> ba = bytearray(myString)
>>> ba[0]
104
>>> bin(ba[0])
'0b1101000'
Run Code Online (Sandbox Code Playgroud)

拆分0b

>>> bin(ba[0]).split('b')[1]
'1101000'
Run Code Online (Sandbox Code Playgroud)

或者

>>> bin(ba[0])[2:]
'1101000'
Run Code Online (Sandbox Code Playgroud)

我希望您能通过片段解决您的问题!:)

  • `bin()` 可以工作,但为了保持一致性,您需要将长度补零为 8。(例如,`bin(3).split('b')[1]` 是 '11',应该是 '00000011' ) (2认同)