使用^运算符将Ints转换为二进制/十六进制

时间:2013-09-04 12:19:29

标签: python

我有两个变量,Read和Out。

阅读是一个字符串,例如“1101”,接下来是Out,它将是一个跟随相同二进制格式的int,例如100000等。我需要执行一个操作,这样如果我的两个变量是

>>1000
>>1011
Output: 0011

我曾尝试使用Read ^ Out,我试图将它们转换为十六进制并执行此操作,但它们总是与其他数字一起使用(2-9)。输出需要为Int或二进制文字(0b0101)

编辑:然后将该值发送到另一个函数,如Write(0x20,0x13,Out)。每当它被发送时,如果它是二进制文件,Python会自动将其转换为int,这会在以后引起问题。

3 个答案:

答案 0 :(得分:3)

^适用于整数。

您可以将字符串转换为具有指定基数的整数:

  

int(x = 0) - >整数

     

int(x,base = 10) - >整数

对于相反的转换,有bin()

In [1]: bin(int('1000', 2) ^ int('1011', 2))
Out[1]: '0b11'

其余的是字符串格式化问题。如果您希望始终使用四位数而不使用前缀,请查看arshajii's answer

答案 1 :(得分:2)

我相信除了^之外你还在寻找格式化操作:

>>> a = int('1000', 2)
>>> b = int('1011', 2)
>>> format(a ^ b, '04b')
'0011'

请注意,二进制文件中的11等于0011

>>> int('11', 2) == int('0011', 2)
True

它归结为数字如何表示为字符串。

答案 2 :(得分:1)

使用基数为2的int()转换两个变量:

>>> bin(int("1000", 2) ^ int(1011, 2))
>>> 0b11