Усечение Python до 32-битного
Как мне усечь мое возвращаемое значение до 32 бит? У меня есть следующий код,
def rotate_left(input, shift):
return hex((input << shift) | (input >> (32 - shift)))
Я хотел бы, чтобы возвращаемое значение было
"0x000000A"
вместо "0xA0000000A"
при звонке rotate_right(0xA000000)
2 ответа
Решение
0xFFFFFFFF - 32 бита, так что просто бинарный, и это с этим...
my_num& 0xFFFFFFFF
Если вы предпочитаете делать это вообще, а не только для 32 бит:
def truncate(val, numbits):
return val & (2**numbits - 1)
Это работает, потому что 2**numbits -1
все 1 в двоичном