http://kmlinux/~culik/wiki
#include <iostream>
#include <string>
using namespace std;
int cnv (char c)
{
if (c >= '0' && c <= '9')
return c - '0';
else if (c >= 'a' && c <= 'z')
return c - 'a' + 10;
else if (c >= 'A' && c <= 'Z')
return c - 'A' + 10;
else
return 0;
}
char eval (int k)
{
if (k < 10)
return '0' + k ;
else
return 'a' + k - 10;
}
string toString (int n, int z)
{
string t = "";
if (n == 0)
{
t = "0";
}
else
{
while (n != 0)
{
char c = eval (n % z);
t = c + t;
n = n / z;
}
}
return t;
}
int fromString (string s, int z)
{
int k = s.length();
int v = 0;
for (int i = 0; i < k; i++)
{
int p = cnv (s[i]);
v = z*v + p;
}
return v;
}
string reverse (string s)
{
string v = "";
int k = s.length();
for (int i = 0; i < k; i++)
{
v = s[i] + v;
}
return v;
}
string reverse2 (string s)
{
string v = "";
int k = s.length();
for (int i = k-1; i >= 0; i--)
{
v = v + s[i];
}
return v;
}
int main()
{
cout << toString (82, 3) << endl;
cout << fromString ("ff", 16) << endl;
cout << reverse ("abc") << endl;
cout << reverse2 ("abc") << endl;
return 0;
}