Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * C++ numeric base conversions
- *
- * - sangf
- */
- #include
- #include
- #include
- #if INT_MAX == 2147483647 && UINT_MAX == 4294967295
- typedef int int_32t;
- typedef unsigned int uint_32t;
- #elif LONG_MAX == 2147483647 && ULONG_MAX == 4294967295
- typedef int int_32t;
- typedef unsigned int uint_32t;
- #else
- # error 32-bit integers required for this code
- #endif
- static const char *base_lookup = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";
- std::string dec_to_base(int_32t number, int_32t base);
- std::string dec_to_base(int_32t number, int_32t base)
- {
- if (base = 37) throw;
- else
- {
- bool negative = false;
- if (number < 0)
- {
- number -= (number * 2); // negation
- negative = true;
- }
- std::string hex_int_32t;
- int result = number, remain = 0;
- do
- {
- number = number / base; // division result
- remain = result % base; // remainder result
- result = number;
- hex_int_32t.insert(0, 1, base_lookup[remain]);
- } while (result != 0);
- if (negative) hex_int_32t.insert(0, 1, \'-\');
- return hex_int_32t;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement