[C] float to ascii(실수형을 아스키 코드로)

728x90
반응형

이건 내가 짠 건 아니고, stackoverflow에서 가져온 코드다.

https://stackoverflow.com/questions/2268725/how-can-i-convert-a-float-double-to-ascii-without-using-sprintf-or-ftoa-in-c

 

How can I convert a float/double to ASCII without using sprintf or ftoa in C?

How can I convert a float/double to ASCII without using sprintf or ftoa in C? I am using an embedded system.

stackoverflow.com

실수형 값을 ascii로 바꿔주는 함수, 임베디드 환경에서도 잘 돌아간다. 

 

 

void floatToAscii(uint8_t* p, float x) // void floatToAscii(char* p, float x)
{
	int n,i=0,k=0;
	n=(int)x;

	while(n>0)
	{
		x/=10;
		n=(int)x;
		i++;
	}

	*(p+i) = '.';
	x *= 10;
	n = (int)x;
	x = x-n;
	while((n>0)||(i>k))
	{
		if(k == i)
			k++;
		*(p+k)='0'+n;
		x *= 10;
		n = (int)x;
		x = x-n;
		k++;
	}
	/* Null-terminated string */
	*(p+k) = '\0';
}

 

그대로 가져다 쓰면 된다. 나 같은 경우는 char형으로 안 바꾸고 uint8_t 형으로 변환하기 위해 매개변수를 uint8_t 형으로 바꿨다. 

 

- 끝 -

728x90
반응형