/**
* 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;
}
}