如何在Python中将二进制字符串转换为ASCII字符串?

2024-04-25 15:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了一个小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-else脚本,但感谢您的回答


Tags: python
3条回答

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

>>> 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'

我希望你能用这些片段来解决你的问题!:)

让我们用“hello”这个词,它是0110100001100101011011000110110001101111

要将其转换回字符,我们可以使用chrint(以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')

我使用struct模块:

import struct
buf=struct.unpack('c',to_bin_data) # for one character
buf=struct.unpack('s',to_bin_data) # for a string 

编辑:抱歉,误解了问题。。。这适用于二进制数据,而不是字符的二进制表示字符串。

相关问题 更多 >