字节操作 Python

Bytes Operation Python

我正在尝试解决一个字节操作:

0x25 ^ (0xFFFFFFFF << 1) = 0x87654321 * x

我正在尝试找到使该陈述为真的 x 的值。

表达式 0x25 ^ (0xFFFFFFFF << 1)0x87654321 只计算整数,分别为 85899345552271560481

如果你想解决8589934555 == 2271560481 * x,那么你只需除法即可。

# Reminder: in Python3, / will always output a float
x = (0x25 ^ (0xFFFFFFFF << 1)) / 0x87654321 # Output: 3.781512588746256

0x25 ^ (0xFFFFFFFF << 1) == 0x87654321 * x # Evaluates to True

您可能想多了,请记住 0x25 只不过是整数的十六进制 符号 。这意味着,对于 Python 它与写 37.

完全一样

此外,^<< 等操作也会 return 整数,因此一旦获得它们输出的值,就真的没有什么可担心的了。初等代数仍然适用。