繁体   English   中英

如何在python 3中实现按位XOR

[英]how to implement bitwise XOR in python 3

我想实现1000000 ^ 10100001的XOR操作。

def keygen(key):
    print (key)
    k0 = key
    w0 = k0[0:8]
    w1 = k0[8:]

    w2 = int(w1) ^ int(10000000)

但即时通讯没有得到正确的输出。 我的w1是: 10100001 ,我的二进制运算w2是: 0b100110001011110110000010

我应该得到: 00100001

您需要使用0b...来表示二进制数。

同样,在使用int将字符串转换为数字时,请指定以2为基数(第二个可选参数)。 否则,它将被解释为十进制数:

w2 = int(w1, 2) ^ 0b10000000
#            ^    ^^------------ binary (= 128 in decimal)
#            |
#            optional argument (base 2)

并且,您不需要为0b10000000调用int ,因为它已经是一个int对象。


更新如果要获取字符串表示形式,请使用str.formatformat指定为08b格式(0:前导零,8:至少8位数字,b:二进制)

>>> format(w2, '08b')
00100001

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM