可能重复:
Problem in calculating checksum : casting int to signed int32
这应该是一个相对简单的答案,我只是不知道如何搜索它...我得到了一些半相关things,但没有任何东西适合我正在尝试做的事情
>>> 1171855803 << 7
149997542784L # I want -326312576
换句话说,将数字视为整数,不允许将其转换为long。 我该怎么做?
我在this question中尝试了解决方案:
>>> x = 0xFFFFFFFF & (1171855803 << 7)
>>> if x > 0x7FFFFFFF: print -(~(x - 1) & 0xFFFFFFFF)
else: print x
-326312576L # yay!
有效!
答案 0 :(得分:1)
可能不是最佳答案,但这有效......
import numpy as np
np.int32(1171855803) << 7
答案 1 :(得分:1)
你可以尝试
import ctypes
a=ctypes.c_int32(1171855803)
a.value<<=7
print a
给出:c_int(-326312576)
似乎允许平台特定的位操作。我不确定效率。