2011-03-08 84 views
3

我得到十六进制值,需要知道我的(参数是INT)是否在值的范围内。 例如:检查参数int是否在十六进制范围内?

public bool IsInTheRange(int parameter) { 
    string range = "0A-0F"; 
    return = ???? 
} 

如何检查,如果该参数是0A-0F的范围是多少?

+2

是字符串静态的,也可以是外部配置?如果它是静态的,你可以用一种明显的方式重写函数,它根本不使用字符串...... – Christoffer 2011-03-08 12:41:02

回答

4

请问范围真的需要被指定为字符串?

public bool IsInTheRange(int parameter) 
{ 
    int rangeMin = 0x0A; 
    int rangeMax = 0x0F; 

    return (parameter >= rangeMin) && (parameter <= rangeMax); 
} 

......如果它确实需要一个字符串,那么你仍然需要解析字符串到最小和最大范围:

public bool IsInTheRange(int parameter) 
{ 
    string range = "0A-0F"; 
    string rangeArray = range.Split('-') 
          .Select(x => int.Parse(x, NumberStyles.HexNumber)) 
          .ToArray(); 

    return (parameter >= rangeArray[0]) && (parameter <= rangeArray[1]); 
} 
+0

是的,它必须这样做,因为范围实际上来自配置文件。 – Erez 2011-03-08 13:06:46

3

有点脆(假定范围是在一个良好的格式等):

public bool IsInTheRange(int parameter) 
{ 
    string range = "0A-OF"; 
    int min = int.Parse(range.Split('-')[0], System.Globalization.NumberStyles.HexNumber); 
    int max = int.Parse(range.Split('-')[1], System.Globalization.NumberStyles.HexNumber); 
    return parameter >= min && parameter <= max; 
} 
1
public static bool IsInTheRange(int parameter) 
{ 
    string range = "0A-0F"; 
    var tokens = range 
     .Split('-') 
     .Select(x => int.Parse(x, NumberStyles.HexNumber)) 
     .ToArray(); 
    return tokens[0] <= parameter && parameter <= tokens[1]; 
}