16 진수열을 정수로 변환한다


함수명
hexsz2int  16 진수열을 정수로 변환한다
형식
int hexsz2int(char *str);
인수
str  16 진수 ASCIZ 캐릭터 라인
함수치
16 진수열을 나타내는 정수
주의 사항
정수의 오버플로우에 주의하는 것.

용례(hexsz2int-test.c )
hexsz2int("B6119");

프로그램(hexsz2int.c )
int hexsz2int(char *str)
{
    int val;
    int sign;
    
    while (*str == ' ' || *str == '\t') str++;
    sign = 1;
    if (*str == '+') str++;
    else if (*str == '-') {
        sign = -1;
        str++;
    }
    val = 0;
    while (*str >= '0' && *str <= '9' ||
           *str >= 'A' && *str <= 'F' ||
           *str >= 'a' && *str <= 'f') {
        val <<= 4;
        if      (*str >= '0' && *str <= '9') val += *str - '0';
        else if (*str >= 'A' && *str <= 'F') val += *str - 'A' + 10;
        else                                 val += *str - 'a' + 10;
        str++;
    }

    return sign == 1 ?  val : -val;
}
설명
16 진수열의 선두로부터, 우선 화이트 스페이스를 읽어 날린다. 다음에 부호를 처리해, 16 진수자의 각 자리수를 변환해 나간다. 각 자리수의 변환에 대해서는,0-9, A-F, a-f와 같은 경우 분류를 고려한다.

관련 함수
정수를 2 진수열로 변환하는, 정수를 10 진수열에 변환하는, 정수를 16 진수열에 변환하는, 2 진수열을 정수에 변환하는, 10 진수열을 정수에 변환한다