+void set_base (int in, int out)
+{
+ _ibase = in;
+ _obase = out;
+}
+
+int is_input_decimal ()
+{
+ return (_ibase == 10);
+}
+
+char *show_base ()
+{
+ static char str[16] = {0};
+ sprintf (str, "%d/%d", _ibase, _obase);
+ return str;
+}
+
+int get_ibase ()
+{
+ return _ibase;
+}
+
+char *itoa (unsigned long value)
+{
+ static char str[8 * sizeof (long) + 1];
+
+ /* decompose */
+ char buffer[8 * sizeof (long) + 1] = {0};
+ int size = 0;
+ do {
+ char x = value % _obase;
+ buffer[size++] = (x > 9) ? 'a' + x - 10 : '0' + x;
+ value /= _obase;
+ } while (value != 0);
+
+ /* revert */
+ int i;
+ for (i = 0; i < size; i++) {
+ str[i] = buffer [size - i - 1];
+ }
+ str[size] = '\0';
+
+ return str;
+}
+