_LIT(KText, "F12A01");
TInt num_hex = atoi_hex(KText);
#define is_hex_num0(a) ((a) >= '0' && (a) <= '9')
#define is_hex_numa(a) ((a) >= 'a' && (a) <= 'f')
#define is_hex_numA(a) ((a) >= 'A' && (a) <= 'F')
#define unichar_to_int(ch, num) do {\
if (is_hex_num0(ch)) {\
num = (num * 0x10) + (ch - '0');\
}\
else if (is_hex_numa(ch)) {\
num = (num * 0x10) + (ch - 'a') + 0xa;\
}\
else if (is_hex_numA(ch)) {\
num = (num * 0x10) + (ch - 'A') + 0xA;\
}\
else\
num = KErrGeneral;\
} while(0)
TInt atoi_hex(const TDesC& buf)//like this: _LIT(KText, "F12A01");
{
TInt i = 0;
TInt num = 0;
TInt len = buf.Length();
while(i < len)
{
TInt8 ch = buf[i++];
unichar_to_int(ch, num);
if (num == KErrGeneral)
return KErrGeneral;
}
return num;
}