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

在python中如何将一个值范围映射到另一个值范围,python,map,int,byte,Python,Map,Int,Byte,如果想在python中实现与此等价的(以及反向toByte),如何在python中映射 int toInt(byte b) { return map(b, 0, 255, -128, 127); } 我会试试看 int([representation],base)-128 但我不知道什么是表示法和基数有不止一种方法可以做到这一点。您可以使用显式映射: INT_MAP = {x: x - 128 for x in range(256)} def to_int(val): """M

如果想在python中实现与此等价的(以及反向toByte),如何在python中映射

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

int([representation],base)-128 

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

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

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
def to_int(val,max_signed_val=128):
最大值=最大签名值*2
assert val
有多种方法可以做到这一点。您可以使用显式映射:

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
def to_int(val,max_signed_val=128):
最大值=最大签名值*2
assert val
int([表示],base)-128
如果我能很好地理解你的问题。 如果您出于任何原因对函数不满意,请尝试使用python字典结构
int([representation],base)-128
,如果我很理解您的问题的话。
如果出于任何原因对函数不满意,请尝试使用python字典结构,这不是简单的:

def toInt(b):
    return b-128

def toByte(i):
    return i+128

这不就是:

def toInt(b):
    return b-128

def toByte(i):
    return i+128

输出应该是什么?这里的原始语言是什么?您的意思是“将[0:256]范围内的值映射到[-128:128]范围内的值”?将一个未签名的字节(<代码> UIT88/COD>)映射到一个已签名的字节(<代码> It8/COD> >)C++(ARDUINO)。输入是0到255之间的值,输出是-128到127范围内的值,具有等效位置。输出应该是什么?这里的原始语言是什么?您的意思是“将[0:256]范围内的值映射到[-128:128]范围内的值”?将一个未签名的字节(<代码> UIT88/COD>)映射到一个已签名的字节(<代码> It8/COD> >)C++(ARDUINO)。输入是0到255之间的值,输出是-128到127之间的值,具有等效位置。有人知道表示法和基是什么吗?表示法是写入字节值的方式。expression='11111111'和base=2将返回255。您也可以使用十六进制,这取决于它在代码中的来源。有人知道什么是表示和基吗?表示是您写入字节值的方式。expression='11111111'和base=2将返回255。您也可以使用十六进制,这取决于它在代码中的来源。