51下keil中有没有字符串转换的函数 |
您所在的位置:网站首页 › 为什么max函数出来没有数值 › 51下keil中有没有字符串转换的函数 |
51/52单片机 keil C语言 字符转数字
你的字符串是存在char* a中吧。 *a就是第一个字符,*(++a)就是第二字符。再来一次*(++a)就是第三个字符,但是记得不要记a加的出了字符串的界就行了。 要不就把串口发来的数据存到一个char a[10]的数组中。然后用的时候用下标去一个一个取,比如: a[0]就是第一个字符,a[1]就是第二个字符。 单独取出来的字符再和'0'这个字符相减就是你的字符表示的真实数字。 比如一个char a = '9'. int number = a - '0'; 这样number中就存的是数字9. 第一种情况,如果你的字符串是存在char *s中,像这样: char *s = "5670"; 这样,第一个字符就是 char a = *s; int number1 = a - '0'; //这里number1中存的就是数字5 同理,再接着写 a = *(++s); int number2 = a - '0';//这里的number2中存的就是数字6 第三个字符,接着写: a = *(++s); int number3 = a - '0'j;//number3中存的就是数字7 第四个字符;接着: a = *(++s); int number4 = a - '0';//这时number4中存的就是数字0 这个时候再把四个数字,存到你的L和R中: int L = number0*10+number2; int R = number3*10+number4; 第二种情况,如果从串口取到的字符都是存在一个数组中,比如: char a[10]; 这样你就用数组的标号取就可以了。 一般的编译器都可以自动转换的,若报错可以加上强制转换,比如 unsigned char chx = 38;你打印输出肯定输出的是‘0’,强制转换如下 int a = 38; unsigned char chx = (unsigned char)a; 另外字符型数据不是字符串,字符型赋值是用‘’而字符串使用“” int型123转换成字符型是'{',既对应assic码。 123转成“123”是没有这样的函数的,若想实现,你需要拆分每位数,然后根据assic码进行转换。 keil c中如何将整型转化为字符串可以使用sscanf,就像sprintf将整型数转换成字符串输出一样,逆运算(KEILC 中scanf和printf确定了通过单片机串行口完成输入输出模式,除非做了修改,一般实际中不用)。 给你个例子: unsigned char string[5]={"1234"}; unsigned int n; sscanf(string,"%u",n); //string是字符串,%u是格式控制串,u是无符号十进制数,n是变量n的地址。 printf ("%d\n",n); //可在KEIL C 开发环境中输出观察 你可以把上面这部分代码放到KEIL C中的HELLO.C程序中观察验证一下。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |