/********************************************************************************************* @Name : 浮点型转字符* @Brief : none* @Input : str:字符串指针 num:浮点数 n:精度* @Output : none* @Return : none******************************************************************************************
**/
int ftoa(char *str, float num, int n) //n是转换的精度,即是字符串'.'后有几位小数
{int sumI;float sumF;int sign = 0;int temp;int count = 0;char *p;char *pp;if(str == NULL) return -1;p = str;/*Is less than 0*/if(num < 0){sign = 1;num = 0 - num;}sumI = (int)num; //sumI is the part of intsumF = num - sumI; //sumF is the part of float/*Int ===> String*/do{temp = sumI % 10;*(str++) = temp + '0';}while((sumI = sumI /10) != 0);/*******End*******/if(sign == 1){*(str++) = '-';}pp = str;pp--;while(p < pp){*p = *p + *pp;*pp = *p - *pp;*p = *p -*pp;p++;pp--;}*(str++) = '.'; //point/*Float ===> String*/do{temp = (int)(sumF*10);*(str++) = temp + '0';if((++count) == n)break;sumF = sumF*10 - temp;}while(!(sumF > -0.000001 && sumF < 0.000001));*str ='\0';return 0;}/********************************************************************************************* @Name : 转置函数* @Brief : none* @Input : s:待转换字符串* @Output : none* @Return : none******************************************************************************************
**/
void reverse(char *s)
{ char temp; char *p = s; //p指向s的头部 char *q = s; //q指向s的尾部 while(*q) ++q; q--; //交换移动指针,直到p和q交叉 while(q > p) { temp = *p; *p++ = *q; *q-- = temp; }
} /********************************************************************************************* @Name : 整型转字符* @Brief : none* @Input : n:整型 s:字符串* @Output : none* @Return : none******************************************************************************************
**/void itoa(uint16_t n,char s[])
{uint16_t i = 0; do //从各位开始变为字符,直到最高位,最后应该反转 { s[i++] = n%10 + '0'; n = n/10; }while(n > 0); s[i] = '\0'; //最后加上字符串结束符 reverse(s);
}