码迷,mamicode.com
首页 > 其他好文 > 详细

串口收发字符转换为整数

时间:2015-05-03 17:30:47      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:串口字符串   vb   vc   字符转换   下位机   

最近在做VB串口上位机,其中一个问题就是:如何将串口收到的字符串原样转换为整型:

比如:收到“12345”  赋值给变量就是12345

在VC6.0环境下验证通过:(参靠了这位帅哥的:http://zz.csdn.net/bin/logs.php)

 

#include<iostream.h>
#include <stdio.h>
#include <string.h>

 


int  mi(unsigned char dat, unsigned char mi)
{
  unsigned char i;
  int sum = 1;

  for(i=0; i<mi; i++)
  {
    sum = sum * dat;        
  }

  return sum;
}


/****************************************************
*函数:strtoint(char *str,int result)
*输入:unsigned 字符串
*输出:整型数字
*****************************************************/

int strtoint(unsigned char* str,int result)
{ int i,tmp=0;         //i,tmp临时变量
  int length=strlen((char*)str);//strlen参数为const char*,故强制转换
  i=0;
  if(str[0]==‘-‘)  i=1;
  for(;i<length;i++)
  {
   tmp = str[i]&0x0f;         //如果原数组中存放的是ascii码,直接将其转换为数字
   result+=tmp*mi(10,length-i-1); //1*100+2*10+3*1
  }
  if(str[0]==‘-‘) return -result;
  return result;
}

 

void main()
{ unsigned char str[10] = "123456";
    
  int result;
  result=0;
  result=strtoint(str,result);
  printf("输入字符串是:%s\n",str);
  printf("输出整型数字:%d\n",result);//123
}

 //--------------------------------------------分割线----------------------------

效果图:

技术分享

 

这里需要利用一个小子函数的来具体描述1*100+2*10+3*1中10进制随位数的变化:

技术分享

在main函数中验证通过:

技术分享

串口收发字符转换为整数

标签:串口字符串   vb   vc   字符转换   下位机   

原文地址:http://blog.csdn.net/u013457167/article/details/45459887

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!