检查参数int是否在十六进制范围内?

时间:2011-03-08 12:33:21

标签: c# .net

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

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

如何检查参数是否在0A-0F范围内?

3 个答案:

答案 0 :(得分:4)

范围是否真的是否需要指定为字符串?

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

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

...如果它确实需要是一个字符串,那么你仍然需要将该字符串解析为min和max bounds:

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]);
}

答案 1 :(得分: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;
}

答案 2 :(得分: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];
}