串列埠收發字元轉換為整數

wsqyouth發表於2015-05-03

最近在做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函式中驗證通過:

相關文章