工程应用标准示范程序:将一个ADC采样值转换为ASCII码

来源:互联网 发布:西门子冰箱知乎 编辑:程序博客网 时间:2024/05/29 17:20
// 将一个采样值,由指数表示的数转换为ASCII码,并输出ASCII码及字符的长度。如:2252*10^(-2)  输出为22.52  5位// 这个函数是不能测负数的。/*******************************************************************************函数功能:*   NumToAscii: 将输入数转换为10进制表示的ASCII码。       *参数列表:*   Exponent: 输入数的10的指数。*   Number: ASCII码长度,即字符串长度。*   Buffer: 缓存区。*内部变量: *   jx:*   ix:*   ArrayTemp[8]:*   NumberTemp:*函数返回值:*   No: 转换后的位数。short 为2字节,16位,表示范围为-32767 -- 32767  (32位)*******************************************************************************/#include <stdio.h>unsigned char NumToAscii(short Number,char Exponent,unsigned char *Buffer);int main(){    unsigned char array[255] = {0};    unsigned char result = 0;    result = NumToAscii(240,-1,array);    printf("%d\n",result);  /* char length*/    printf("%s\n",array);    return 0;}unsigned char NumToAscii(short Number,char Exponent,unsigned char *Buffer){    unsigned char No = 0;    char jx = 0,ix;    unsigned char ArrayTemp[8];    unsigned int NumberTemp;    if((Number==0)||(Number!=0 && Exponent<-6))    {        *Buffer='0';        No=1;    }    else    {        NumberTemp=(unsigned int)Number;        for(ix = 0; ix < Exponent; ix++)        {            if(NumberTemp <= 9999999)                NumberTemp = NumberTemp * 10;            else                NumberTemp = 99999999;        }        while (NumberTemp > 0 || Exponent < 0)        {            ix = NumberTemp%10;            NumberTemp = NumberTemp/10;            ArrayTemp[jx] = ix + 0x30; // 0--9 的ASCII码是48 -- 57 ;在,而0x30 = 48            jx++;            Exponent++;            if(Exponent == 0)            {                ArrayTemp[jx] = '.';                jx++;                if(NumberTemp == 0)                {                    ArrayTemp[jx] = '0';                    jx++;                }            }        }        No = 0;        jx--;        while (jx >= 0)        {            *(Buffer + No) = ArrayTemp[jx];            No++;            jx--;        }    }    return(No);}
阅读全文
1 0
原创粉丝点击