>> Hex to Decimal 변환 함수(다중문자)
설명 :
char 타입의 Hex문자 여러개를 입력받아 unsigned Decimal 숫자형으로 변환
참조 :
#include <limits>
using namespace std;
함수정의 :
사용 예:
설명 :
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 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
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 |