原创 C语言数值转换成字符算法

2011-6-8 17:28 3542 13 13 分类: 处理器与DSP

1、ADC数字值16进制转换成字符,变为电压值,ADC基准3V,12位ADC:
int string_shift(char* outdata,int inport,int inportWidth,int typeLen)
{
 
  float i,buffer;
  int j;
  i =(float)inport;
  buffer = (i/4095)*3000;
  j =(int)buffer;
  outdata[7] =j/1000+'0';       // 取小数点前一位
  outdata[9] =(j%1000)/100+'0'; //取小数点后一位
  outdata[10] =(j%100)/10+'0';  // 取小数点后二位
  outdata[11] =j%10+'0';        // 取小数点后三位
  return 0;
}
2、ADC数字值转换成字符,十进制:
int string_shift(char* outdata,int inport,int inportWidth,int typeLen)
{
 
  int i;
  i =inport;
  outdata[7] =i/1000+'0';       // 取千位
  outdata[8] =(i%1000)/100+'0'; //取百位
  outdata[9] =(i%100)/10+'0';  // 取十位
  outdata[10] =i%10+'0';        // 取个位
  return 0;

}

3、将16进制数值转换成字符,按位转换

int string_shift_hex(char* outdata,unsigned int inport)
{
 
  unsigned int j;
  j=25;
  if(((inport>>12) & 0x000f)>9)
  {
   outdata[j++] =(((inport>>12) & 0x000f)+55); 
  }
  else
  {
 outdata[j++] =((inport>>12) & 0x000f)+'0';  
  }             //取高4位

  if(((inport>>8) & 0x000f)>9)
  {
   outdata[j++] =(((inport>>8) & 0x000f)+55); 
  }
  else
  {
 outdata[j++] =((inport>>8) & 0x000f)+'0';  
  }             //取中高4位

  if(((inport>>4) & 0x000f)>9)
  {
   outdata[j++] =(((inport>>4) & 0x000f)+55); 
  }
  else
  {
 outdata[j++] =((inport>>4) & 0x000f)+'0';  
  }             //取中低4位

    if(((inport>>0) & 0x000f)>9)
  {
   outdata[j++] =(((inport>>0) & 0x000f)+55); 
  }
  else
  {
 outdata[j++] =((inport>>0) & 0x000f)+'0';  
  }             //取低4位

  return 0;

}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /3 下一条