Я предполагаю, что самая сложная часть, с которой вы боретесь, - это преобразование в Rad36, а не получение целого значения из шестнадцатеричного числа, представленного в виде строки. Итак, вот функция, которая принимает unsigned __int64
, преобразует его в Radix 36 и возвращает строку с преобразованным значением.
string rad36(unsigned __int64 v)
{
string retval;
while( v > 0 )
{
unsigned m = v%36;
if( m <= 9 )
retval.insert(0,1,'0'+m);
else
retval.insert(0,1,'A'+m-10);
v /= 36;
}
return retval;
}