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

0 投票
3 回答
1902 浏览
提问于 2025-04-17 17:12

想在Python中做这个事情(还有反向操作toByte),请问在Python里怎么映射?

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

我会尝试这样做

int([representation],base)-128 

但是我不知道“表示法”和“基数”是什么

3 个回答

0

那不就是这样吗:

def toInt(b):
    return b-128

def toByte(i):
    return i+128
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
3

如果我理解你的问题没错的话,int([表示], 基数) - 128。如果你对某个函数不满意,试试用Python的字典结构。

撰写回答