51/52单片机 keil C语言 字符转数字 160

通过串口接收到数据,存储在字符变量a中,为“ABXY",如何将AB与XY拆开,保存到两个int变量L与R中?求解(单片机/C语言初学者……希望能讲的详细点……)是我说的有... 通过串口接收到数据,存储在字符变量a中,为“ABXY",如何将AB与XY拆开,保存到两个int变量L与R中?求解(单片机/C语言初学者……希望能讲的详细点……)
是我说的有误……串口接收到 例如 "5670"的字符,存储在unsigned char a中
现在要把 56 与70分别存储到整形的L和R中……
展开
 我来答
改变世界的魔法师
2014-06-14 · TA获得超过681个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:106万
展开全部
你的字符串是存在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];
这样你就用数组的标号取就可以了。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
做而论道
高能答主

2013-10-22 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
串口接收到 例如 "5670"的字符,存储在unsigned char a中

--unsigned char a,只能存放:0~255,即一个字符。

--5670,你是怎么存放到unsigned char a里面的?

--这是数组吗?

现在要把 56 与70分别存储到整形的L和R中……

--既然有这个要求,当初,为什么要存储在unsigned char a中呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
he_123456
2013-10-20 · TA获得超过2891个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1302万
展开全部
unsigned int L ,R ;
unsigned char a[9];
unsigned char *p;
unsigned char *q;
...
p=&a[0];
q=&L;
(*q++)=(*p++);
*q=*p++;
q=&R;
(*q++)=(*p++);
*q=*p++;
......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南瓜猪的的的
推荐于2018-03-26 · TA获得超过1297个赞
知道小有建树答主
回答量:1598
采纳率:0%
帮助的人:391万
展开全部
#define uint16 unsigned int
#define uint8 unsigned char

void fun(uint8 * a,uint16 * L,uint16 * R)
{
*L=a[0];
*L+=(uint16)((uint16)(a[1])<<8);
*R=a[2];
*R+=(uint16)((uint16)(a[3])<<8);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庹白楣0G4
2013-10-20 · 超过11用户采纳过TA的回答
知道答主
回答量:85
采纳率:100%
帮助的人:16.2万
展开全部
AB=AB>>8;//右移8位后,再赋值给L
L=AB;
XY=R;//低8位直接赋值
追问
但是开头的总变量没用……ABXY都是存储在a中的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式