我如何在c#中映射数字,就像在Arduino中映射一样

本文关键字:映射 Arduino 一样 数字 | 更新日期: 2023-09-27 17:53:25

c#中是否有像Arduino的map这样的功能?

我如何在c#中映射数字,就像在Arduino中映射一样

您可以使用扩展方法(例如decimal):

public static class ExtensionMethods
{
    public static decimal Map (this decimal value, decimal fromSource, decimal toSource, decimal fromTarget, decimal toTarget)
    {
        return (value - fromSource) / (toSource - fromSource) * (toTarget - fromTarget) + fromTarget;
    }
}

那么你可以这样使用:

decimal res = 2.Map(1, 3, 0, 10);
// res will be 5
private static int map(int value, int fromLow, int fromHigh, int toLow, int toHigh) 
{
    return (value - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow;
}