본문 바로가기

언어/C#

더 빠른 Hexa string To char

[출처] 더 빠른 Hexa string To char|작성자 별의별생각



일반적으로 "AA", "0F", "1D" 따위의 Hexa 코드 형태로 된 문자열을 char type로 변환하고자 하면, char value = (char)Convert.ToByte("AA", 16); 형태로 .net 내장 함수를 통해 구현할 것이다. 한 두개 또는 몇 수십개 작업을 하는 경우 이 방법 외 굳이 다른 선택을 찾을 필요는 없다. 하지만, 1000개, 10000개 또는 그 이상의 무수한 변환을 해야하는 경우 생각보다 큰 오버헤드에 직면한다. 아마도 범용 함수 특성상 많은 조사와 안전장치의 결합이 원인이지 싶다. 그렇다면 빠르게할 방법은? 직접 만들어 쓰면된다!
 
public char HexaToChar(int a, char b)
{
    //첫 문자 변환
    if (a >= 65 && a <= 70) { a = ((a - 55) * 16); } //문자이면.
    else if (a >= 48 && a <= 57) { a = ((a - 48) * 16); } //숫자이면

    //두 번째 문자 변환 및 첫 문자와 합산
    if (b >= 65 && b <= 70) { a += (b - 55); }  //문자이면
    else if (b >= 48 && b <= 57) { a += (b - 48); }  //숫자이면
​
    return (char)a; //범위에 없는 경우 원래 a값에 대한 char만 반환.
}

사용: string hexa = "5A"; char value = HexaToChar(hexa[0], hexa[1]); 결과: 'Z'

*주의: Hexa문자열이 소문자로 구성됐다면 ASCII 코드 범위를 바꾸거나 사전에 대문자로 치환해야한다.  

*비교 속도는 차후 조사하여 본문 업데이트 하겠음. 여튼 확연히 차이나도록 빠름.

'언어 > C#' 카테고리의 다른 글

string format  (0) 2018.03.10
활성창에 키 입력  (0) 2018.03.10
네트윅 Ping 감시용 프로그램(수천대의 네트윅 감시용으로 만듬)  (0) 2018.03.10
미로그리기 소스  (0) 2018.03.10
C#에서 ImageSearch 사용하기  (0) 2018.03.10