// conv.h // Author: Josh Holtrop // Date: 08/02/04 #include "conv.h" #include "hos_defines.h" // BCD to string // returns number of characters generated before null terminator int bcdtoa(u32_t bcd, char *buf) { *buf++ = ((bcd & 0xF0) >> 4) + '0'; *buf++ = (bcd & 0xF) + '0'; *buf = 0; return 2; } // convert integer to hexadecimal string int itox(u32_t num, char *buf) { int s, i = 0; for (s = 28; s >= 0; s -= 4) { u32_t val = (num >> s) & 0xF; if (i || val || (!s)) { val = (val > 9) ? (val + 'A' - 10) : (val + '0'); buf[i++] = val; } } buf[i] = 0; return i - 1; } // convert signed integer to decimal string int itoa(int num, char *buf) { // 4,294,967,296 int hitNum = 0, i = 0, mod, val; if (num < 0) { buf[i++] = '-'; num = -num; } for (mod = 1000000000; mod >= 1; mod /= 10) { val = num / mod; num %= mod; if (val || (mod == 1)) hitNum = 1; if (hitNum) { buf[i++] = val + '0'; } } buf[i] = 0; return i - 1; } // convert an unsigned integer to decimal string int utoa(u32_t num, char *buf) { // 4,294,967,296 int hitNum = 0, i = 0, mod, val; for (mod = 1000000000; mod >= 1; mod /= 10) { val = num / mod; num %= mod; if (val || (mod == 1)) hitNum = 1; if (hitNum) { buf[i++] = val + '0'; } } buf[i] = 0; return i - 1; } char asciiSwitchCase(char chr) { if (chr >= 'A' && chr <= 'Z') return chr + ('a' - 'A'); if (chr >= 'a' && chr <= 'z') return chr - ('a' - 'A'); return chr; }