Python 2.5将字符串转换为二进制

5

我知道在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变成

00100010010101000110100001101001011100110010000001101001011100110010000001101101011110010010000001110011011101000111001001101001011011100110011100100010


1
你的“xml字符串”确实是str()类型而不是unicode()对象吗? - user97370
这是一个str()。几乎与上面完全相同,我可以将其转换为unicode。 - Nix
实际上,字节字面值符号是在2.6+版本中引入的。 - Ignacio Vazquez-Abrams
尝试运行以下命令:echo -n 'This is my string' | xxd -b - kev
2个回答

7

这个一行代码可以正常工作:

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

@Nix 你可以自己编写 bin() 函数。 - kev

1
我认为你可以像这样以更简洁的方式完成它:
>>>''.join(format(ord(c), '08b') for c in 'This is my string')
'0101010001101000011010010111001100100000011010010111001100100000011011010111100100100000011100110111010001110010011010010110111001100111'

格式化函数将用8位二进制表示字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接