串口收发字符转换为整数

最近在做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函数中验证通过:

时间: 2024-10-30 17:31:13

串口收发字符转换为整数的相关文章

串口收发数据时字符、十六进制、二进制格式详细区分

在使用串口调试助手时发送和接收数据都是以字节 (Byte) 为单位,并且可以选择字符.十六进制.二进制三种收发格式 ,那么这三种格式究竟怎样区分呢? 首先我们来明确一个概念 :串口收发数据的单位 '' 字节 (Byte) '' ,   1Byte = 8 bits , 串口收发数据格式一般为  1bit起始位(一般为0) + 8bits 数据位(一字节) +1bit校验位(可有可无) +1bit结束位(一般为1) 下面逐一区分三种收发格式: (1) 十六进制:   由于1位十六进制数位宽为 4b

字符串转换为整数”123“-&amp;gt;123

字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给定函数原型 int StrToInt(const char *str) .实现字符串转换成整数的功能.不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,因为为第一位.所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候

字符串转换为整数”123“-&gt;123

字符串转换为整数"123"->123 题目描述: 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型 int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,由于为第一位,所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候,12

关于将一个字符串转换为整数的问题

当我看到这么一个问题时,我觉得是一个很简单的问题,立刻就会想到用一个while循环遍历整个字符串,将一个个字符转化为数字,关于这种问题已经不是第一次遇到了,所以自信满满的写好然后去网上寻找答案. 这或许就是理想和现实的差距,把自己写的程序和标准答案一对,发现没有一个地方可以称之为写对.答案中提到了atoi函数,是一个把字符串转换为整数的库函数. 下面就是具体的实现: long long StrToIntCode(const char *ptr, bool minus) {     long lo

[Swift]字符串根据索引获取指定字符,依据ASCII编码实现字符和整数的快速转换

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言. 它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解. 在Swift中实现:字符串根据索

将IP地址转换为整数

#include<iostream> #include<math.h> using namespace std; int main() { char ip[16]; char temp[4][4]; cin>>ip; char *delim=".";//分隔符 char *p; unsigned long i=3;//这儿要注意要把字符串反着存放 strcpy(temp[i--],strtok(ip,delim));//strtok字符串分割成一个个

编程算法 - 把字符串转换为整数 代码(C)

把字符串转换为整数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数StrToInt, 模拟atoi的功能, 把字符串转换为整数. 须要考虑异常处理, 正负数, 还有Int的最大值(0x7FFFFFFF)和最小值(0x80000000)等情况. 代码: /* * main.cpp * * Created on: 2014.7.12 * Author: spike */ #include <stdio.h> #include &l

wince串口收发的编码问题

在编写串口收发的嵌入式程序时碰到了一些奇怪的问题,主要是发送的数据乱码,接收的数据为空,但是数据长度并不为零.经过一些来来回回的修改,反反复复的参考别人的代码,最终认为主要是因为wince内部使用的是unicode编码,而PC机端的串口调试助手都是ascii码,两者之间需要转换,即在发送数据之前要先把unicode转换成标准ascii码,收到数据数据后要转换回来,转换方法都是在网上找大神的资料参考的: unicode转换成标准ascii码: CString csStr(_T("输入350个以上的

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体. 语法为:htmlspecialchars(string,quotestyle,character-set). PHP 从 5.4.0 版本开始把htmlspecialchars() 函数的第三个参数字符串编码的默认值改成了 UTF-8, 为了使 PHP 5.4 之前环境中编写的代码能够向前兼容,建议调用 htmlspecialchars 函数的的时候都提供字符串编码参数. 比如说PHP代码中的中文编码正好是 G