Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Date: 14 APR 2011
- */
- #include <iostream>
- #include <string.h>
- using namespace std;
- char* dectobase(int val,
- int base, // 2 for binary, 16 for hex.
- const char digits[] = "0123456789ABCDEF", //can be overridden, if you want base 27.
- int i = 0 //for office use only
- )
- {
- int r = val % base; //remainder, this one will be converted and dropped onto our stack
- int v = ((val - r) / base); //this will be recursed on
- char* ret = '\0';
- if ((base > strlen(digits)) || (base < 2)) // base 1 = you fail
- return ret;
- if (v == 0) //base case, most-significant digit.
- {
- ret = new char [i]; //is this right?
- i = 0; //reset, use i as index on way back out
- ret[0] = digits[r];
- return ret;
- }
- else
- {
- ret = dectobase(v, base, digits, ++i);
- ret[i++] = digits[r];
- return ret;
- }
- }
- int main()
- {
- int val = 0;
- cout << "val:";
- cin >> val;
- cout << "hex:" << dectobase(val, 16) << endl;
- cout << "bin:" << dectobase(val, 2) << endl;
- cout << "oct:" << dectobase(val, 8) << endl;
- cout << "wtf:" << dectobase(val, 10, ")!@#$%^&*(") << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement