atoi_hex

   _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;
	}


 

你可能感兴趣的:(hex)