저번에 코드문제냈었던 숫자 1234 to 문자 "1234" 의
글쓴이: dopesoul / 작성시간: 화, 2005/01/11 - 3:10오후
요즘 한창 printf 함수를 제작하고있는데
n 진법의 format 으로 숫자를 인수로받아서
표준출력(임베디드 시스템이므로 uart 나 lcd 등...)
으로 뿌려주는 부분입니다. 저번에는 문자열을 뒤집는 부분이
마음에 안들었었는데 이러한 방법으로 하니 마음에 드는군요^^
하드웨어에 의존하는 back end 부분은 분리해 두었습니다.
아마 putchar,getchar 등이 될테지요.
임베디드 공부하시고 계시다면 한번쯤 제작하시는것도
공부에 도움이 될것 같네요.
동참하시려면 kldp.net 의 Standard I/O 어쩌구 하는
프로젝트로 휘릭~
char hexcode[16] = "0123456789ABCDEF";
void rprintfnum_(unsigned char base,long n,char numDigits,char padchar)
{
char *p,buf[32];
unsigned long x;
unsigned char count,isSigned;
// Convert negative to positive
if(n<0)
{
isSigned = 1;
x = -n;
} else
{
isSigned = 0;
x = n;
}
count = (numDigits-1) - (isSigned?1:0);
p = buf + sizeof(buf);
*--p = '\0';
while(count--)
{
if(x!=0)
{
*--p = hexcode[x%base];
x /= base;
}
else
{
*--p = padchar;
}
}
if(isSigned == 1)
{
if(n<0)
{
*--p = '-';
}
else if(n > 0)
{
*--p = '+';
}
else
{
*--p = ' ';
}
}
count = numDigits;
while(count--)
{
putchar(*p++);
}
}Forums:

