将字符串正确转换为二进制 python

correct convert string to bynary python

我有一个字符串需要转换成二进制。我试过这个:

bin = ''.join(format(ord(x), 'b') for x in strr)

但是结果是错误的长度,因为 Python 没有保留前导零。例如,它输出 1110100 而不是 01110100

此方法:

temp = '{0:08b}'.format(frame)

不适用于字符串。

如何正确地将字符串转换为二进制?

编辑:

示例输入:'test'

期望输出:'1110100011001010111001101110100'

我不确定这是不是在做您需要它做的事情。这个怎么样:

''.join("{:08b}".format(int(num, 16)) for num in strr.split())

演示

In [34]: strr
Out[34]: '74 65 73 74'

In [35]: ''.join("{:08b}".format(int(num, 16)) for num in strr.split())
Out[35]: '01110100011001010111001101110100'

如果您的文本真的是序号编码的十六进制,那么您就有了一种非常时髦的数据存储方式,但您可以这样做:

''.join("{:08b}".format(ord(num)) for num in strr

演示

In [42]: strr
Out[42]: '74 65 73 74'

In [43]: ''.join("{:08b}".format(ord(num)) for num in strr)
Out[43]: '0011011100110100001000000011011000110101001000000011011100110011001000000011011100110100'