http://kmlinux/~culik/wiki #include #include 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; }