字节操作 Python
Bytes Operation Python
我正在尝试解决一个字节操作:
0x25 ^ (0xFFFFFFFF << 1) = 0x87654321 * x
我正在尝试找到使该陈述为真的 x 的值。
表达式 0x25 ^ (0xFFFFFFFF << 1)
和 0x87654321
只计算整数,分别为 8589934555
和 2271560481
。
如果你想解决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 整数,因此一旦获得它们输出的值,就真的没有什么可担心的了。初等代数仍然适用。
我正在尝试解决一个字节操作:
0x25 ^ (0xFFFFFFFF << 1) = 0x87654321 * x
我正在尝试找到使该陈述为真的 x 的值。
表达式 0x25 ^ (0xFFFFFFFF << 1)
和 0x87654321
只计算整数,分别为 8589934555
和 2271560481
。
如果你想解决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 整数,因此一旦获得它们输出的值,就真的没有什么可担心的了。初等代数仍然适用。