我有一个0-1023范围内的数字列表。我想将它们转换为整数,使得1023映射到-1,1022映射到-2等等。而0,1,2,.... 511保持不变。
我提出了一个简单的说法:
def convert(x):
return (x - 2**9) % 2**10 - 2**9
有更好的方法吗?
答案 0 :(得分:2)
最可能的解决方案:
def convert(x):
if x >= 512:
x -= 1024
return x
答案 1 :(得分:2)
def convert(x):
return x - (x >> 9) * 1024
使用ctypes
:
from ctypes import c_short
def convert(x):
return c_short(x << 6).value >> 6
答案 2 :(得分:0)
max_uint_value = 512
def unassigned_to_int(uint):
return uint - max_uint_value if uint >= max_uint_value else uint