2011-03-08 3 views
3

16 진수 값을 얻고 내 (INT 매개 변수)가 값 범위 내에 있는지 알아야합니다. 예를 들어 : 매개 변수가 0A-0F의 범위에있는 경우매개 변수 int가 16 진수 범위에 있는지 확인하십시오.

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

어떻게 확인할 수 있나요?

+2

문자열 정적을하거나 할 수 있습니다 외부에서 구성 되었습니까? 정적 인 경우, 문자열을 전혀 사용하지 않는 명백한 방법으로 함수를 다시 작성할 수 있습니다. – Christoffer

답변

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

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