将整数转换为二进制字符串。结果是一个有效的Python表达式。如果
x
不是Python int对象,则必须定义一个返回整数的__index__()
方法。
因此,如果我想从bin
获取Cadilac
该怎么处理此字符串和__index__()
方法?如何合理地组成它们?
答案 0 :(得分:3)
这应该让你开始:
>>> for c in "Cadillac":
... n = ord(c) # convert the character to a number
... print '{0:08b}'.format(n) # show the number with 8 binary digits
...
01000011
01100001
01100100
01101001
01101100
01101100
01100001
01100011
答案 1 :(得分:1)
car = "Cadillac"
binstr = "".join( [ bin((1<<8)+ord(s))[3:] for s in car ] )
binstr = '10000111100001110010011010011101100110110011000011100011'
循环字符串中的字符。 ord()将char转换为其序数(ASCII)。 bin()转换为二进制字符串。 [2:]跳过'0b'。 “”。join()将所有内容组合成一个字符串。
EDIT。正如评论员所指出的那样,bin()会截断前导零。基于原始问题的上下文(字符串),我假设我们总是使用8位字符,我的更改在位置8处的高位预先被[3:]剥离。我作弊。当然,这会在Unicode字符串上失败。
bin(1<<8+0)[3:]
'00000000'
len(bin(1<<8+0)[3:])
8
"".join( [ bin((1<<8)+ord(s))[3:] for s in "Cadillac" ] )
'0100001101100001011001000110100101101100011011000110000101100011'