>> Hex to Decimal 변환 함수(다중문자)

설명 :
char 타입의 Hex문자 여러개를 입력받아 unsigned Decimal 숫자형으로 변환

참조 :
#include <limits>
using namespace std;

함수정의 :
unsigned chr2hex(char *c, int len)
{
    unsigned val=0;
    unsigned val2=0;
    int i;

    for (i=0; i< len; i++)
    {
        if (c[i]>='0' && c[i]<='9') val =  static_cast<unsigned>(c[i] - '0');
        else if (c[i]>='A' && c[i]<='F') val = static_cast<unsigned>(c[i] - 'A')+0xA;
        else if (c[i]>='a' && c[i]<='f') val = static_cast<unsigned>(c[i] - 'a')+0xa;
        else val = std::numeric_limits<unsigned>::max(); // you can also return 0x10 if you prefer.
        val *= ::powl((long)16, (long)(len-i-1));
        val2 += val;
    }

    return val2;
}


사용 예:
unsigned value;

value = chr2hex("A1", 2);
printf("value : 0x%02X, %d \n", value, value);


>>
value : 0xA1, 161

'Code Snippets > Function code' 카테고리의 다른 글

[C]Random Number Generator  (0) 2010.05.14
[C++] Hex to Decimal Convert  (0) 2010.05.14
Posted by 혀나미
,