将一个数字从一个范围重新映射到另一个范围

时间:2014-09-15 02:02:29

标签: go arduino

Arduino map功能是否有任何等效功能?

  

map(value,fromLow,fromHigh,toLow,toHigh)

     

描述

     

将数字从一个范围重新映射到另一个范围。也就是说,一个值   fromLow会映射到toLow,值从高到高,   介于两者之间的值,等等

如果没有,我将如何在go中实现这个?

1 个答案:

答案 0 :(得分:3)

  

Arduino map函数是否有任何等价物?

标准库,或更具体地说是math package,不提供这样的功能,没有。

  

如果没有,我将如何在go中实现这个?

通过获取原始代码并将其转换为Go。 C和Go在语法上非常相关,因此这项任务非常非常简单。您链接的map手册页为您提供了代码。正如已经提到的那样,要翻译的内容是微不足道的。

原件来自page you linked

  

对于数学倾向,这是整个函数

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

您可以将其转换为类似

的内容
func Map(x, in_min, in_max, out_min, out_max int64) int64 {
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
}

Here就是游乐场上的一个例子。

请注意,map在Go中不是有效的函数名,因为已经有map 内置类型使map成为保留关键字。用于定义地图类型的关键字,类似于[]T语法。