4

我知道这在 python 2.6 中很容易实现。但是在 Python 2.5 中最简单的方法是什么?

x = "This is my string"
b = to_bytes(x)  # I could do this easily in 2.7 using bin/ord 3+ could use b"my string"
print b

有什么建议么?我想把 x 变成

001000100100100/101001100100/101001001001,0001,0001,0001,0001,0001,0001,0001,000101001008100c_00100c1001,0001,0001,0001,0001,000100100100c1100c100100c1008100c100c100cup100100,0001,0001,0001,0001,0001,0001,0001,00010100100100c100c_1100100c1008100800cie100100c100c101,0001,0001,0001,0001,0001,0001,0001008100100c100100c>

4

2 回答 2

6

这一条线有效:

>>> ''.join(['%08d'%int(bin(ord(i))[2:]) for i in 'This is my string'])
'0101010001101000011010010111001100100000011010010111001100100000011011010111100100100000011100110111010001110010011010010110111001100111'

编辑

你可以bin()自己写

def bin(x):
    if x==0:
        return '0'
    else:
        return (bin(x/2)+str(x%2)).lstrip('0') or '0'
于 2012-01-10T15:45:39.973 回答
1

我认为您可以像这样以更清洁的方式做到这一点:

>>>''.join(format(ord(c), '08b') for c in 'This is my string')
'0101010001101000011010010111001100100000011010010111001100100000011011010111100100100000011100110111010001110010011010010110111001100111'

format 函数将以 8 位二进制表示形式表示字符。

于 2013-09-26T09:21:20.307 回答