-1

我有两个变量,Read 和 Out。

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

>>1000
>>1011
Output: 0011

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

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

4

3 回答 3

3

^适用于整数。

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

int(x=0) -> 整数

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

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

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

剩下的就是字符串格式的问题。如果您想始终使用四位数且不带前缀,请查看arshajii 的答案

于 2013-09-04T12:24:40.113 回答
2

我相信您正在寻找除以下之外的格式操作^

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

请注意,11在二进制中等于0011

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

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

于 2013-09-04T12:26:35.997 回答
1

使用以 2 为底的 int() 来转换两个变量:

>>> bin(int("1000", 2) ^ int(1011, 2))
>>> 0b11
于 2013-09-04T12:26:21.497 回答