请教文本转数字的数据转换问题

2019-07-20 23:20发布

  最近遇到一个问题,在串口接收到的是ASCII码,比如另一个单片机发送了一个文本的600过来,我在串口接收到的是0x36 0x30 0x30这三个数据,因为我想用接收到的600参与计算,0x36 0x30 0x30无法参与运算,还原成10进制或者16进制,可以通过将0x36-0x30=0x06,0x30-0x30=0x00,0x30-0x30=0x00,然后600=6*100+0*10+0*1,但是这种方法兼容性和可行性都不太好,大家有什么好的解决办法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
普度
1楼-- · 2019-07-21 00:33
找到方法了,用sscanf函数解决,用在线编译器测试了一个小例子
#include <stdio.h>

unsigned char A[10];

unsigned int value = 0;
int main()
{
        A[0] = '7';//查表找到对应的ASCII
        A[1] = '0';
        A[2] = '0';
   sscanf(A,"%d",&value);  
   printf("%d ",value);
   
   return 0;
}

输出结果:700
HXYDJ
2楼-- · 2019-07-21 00:45
 精彩回答 2  元偷偷看……
普度
3楼-- · 2019-07-21 01:43
 精彩回答 2  元偷偷看……
HXYDJ
4楼-- · 2019-07-21 04:09
普度 发表于 2019-7-1 10:49
直接发当然不行,这部分别人已经设置好了,我只需要接收处理即可,而且这个600并不是数值,而是一个文本 ...

这个方法不错

一周热门 更多>