94 lines
1.5 KiB
C
94 lines
1.5 KiB
C
// 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;
|
|
}
|
|
|
|
|