如何在python中将一个值范围映射到另一个值

时间:2013-02-26 18:07:55

标签: python map int byte

想在python中做相同的,(和反向的toByte),你如何映射python?

int toInt(byte b) {
  return map(b, 0, 255, -128, 127);
}

我会尝试

int([representation],base)-128 

但我不知道是什么表示和基础

3 个答案:

答案 0 :(得分:3)

int([representation],base)-128如果我理解你的问题。 如果您因任何原因对某个函数不满意,请尝试使用python字典结构

答案 1 :(得分:0)

有多种方法可以做到这一点。您可以使用显式映射:

INT_MAP = {x: x - 128 for x in range(256)}
def to_int(val):
    """Maps an unsigned integer to a signed one (for values up to 256)"""
    try:
        return INT_MAP[val]
    except KeyError:
        raise ValueError("val must be a value between 0 and 255")

或者,您可以使用数学:

def to_int(val, max_signed_val=128):
    max_val = max_signed_val * 2
    assert val < max_val, "val must be less than {:d}".format(max_val)
    return val - max_signed_val

答案 2 :(得分:0)

不会那么简单:

def toInt(b):
    return b-128

def toByte(i):
    return i+128