我想实现1000000 ^ 10100001的XOR操作。
def keygen(key):
print (key)
k0 = key
w0 = k0[0:8]
w1 = k0[8:]
w2 = int(w1) ^ int(10000000)
但我没有得到正确的输出。我的w1
为:10100001
,我的二进制o.p w2
为:0b100110001011110110000010
。
我应该得到:00100001
答案 0 :(得分:1)
您需要使用0b...
来表示二进制数。
使用int
将字符串转换为数字时,请指定base 2(第二个可选参数)。否则,它被解释为十进制数字:
w2 = int(w1, 2) ^ 0b10000000
# ^ ^^------------ binary (= 128 in decimal)
# |
# optional argument (base 2)
并且,您不需要为int
致电0b10000000
,因为它已经是一个int对象。
更新如果您想要获取字符串表示,请使用str.format
或format
格式指定08b
(0:前导零,8:at至少8位数,b:二进制)
>>> format(w2, '08b')
00100001