查看: 111|回复: 2

如何把字符串转换成uint16_t类型的数据呢?

[复制链接]

该用户从未签到

发表于 2020-11-21 12:12 | 显示全部楼层 |阅读模式
比如我想传个字符串比如 string_data = "{4052,3986,502,2014,500,2014}" ,并且把这个字符串转换成 uint16_t rawdata[6] = {4052,3986,502,2014,500,2014};
应该如何实现呢?

  • TA的每日心情
    慵懒
    2020-4-16 15:21
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-11-24 09:09 | 显示全部楼层
    你问问这个贴的楼主解决了没,参考一下思路。
    https://www.arduino.cn/thread-101822-1-1.html
  • TA的每日心情
    慵懒
    2018-11-12 08:58
  • 签到天数: 37 天

    [LV.5]常住居民I

    发表于 2020-11-24 09:59 | 显示全部楼层
    会指针就很简单
    1. #include <stdio.h>
    2. typedef unsigned short uint16_t;

    3. int parseData(char *data, uint16_t *dest, int num)
    4. {
    5.     int idx = 0;
    6.     char *s = NULL;
    7.    
    8.     s = strstr(data, "{");//查找{
    9.     //"{4052,3986,502,2014,500,2014}"
    10.     // ^
    11.     if(s == NULL){
    12.         return 0;
    13.     }
    14.     s = s + 1;
    15.     //"{4052,3986,502,2014,500,2014}"
    16.     //  ^
    17.     dest[idx++] = atoi(s);
    18.    
    19.     for(int i = 1; i < num; i++){
    20.         s = strstr(s, ",");
    21.         if(s == NULL){
    22.             return idx;
    23.         }
    24.         s = s + 1;
    25.         dest[idx++] = atoi(s);  
    26.     }
    27.     return idx;
    28. }

    29. int main(void) {
    30.     char *string_data = "{4052,3986,502,2014,500,2014}";
    31.     uint16_t rawdata[6];
    32.    
    33.     int idx = parseData(string_data, rawdata, 6);
    34.     printf("idx %d\n", idx);
    35.    
    36.     for(int i = 0; i < idx; i++){
    37.         printf("rawdata %d=%d\n", i, rawdata[i]);
    38.     }
    39.     return 0;
    40. }
    复制代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    关于给esp8266编程和给arduino编程的一些疑问
    关于给esp8266编程和给ard
    本人大一学生,目前正在做创新作业,已经进行到了最后一步:arduino从onenet上调取数
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    【Arduino】168种传感器模块系列实验(104)---MAX30102手腕心率
    【Arduino】168种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    arduinoT12焊台 控制器 炫酷UI
    arduinoT12焊台 控制器 炫
    *声明:本项目源于https://github.com/wagiminator/ATmega-Soldering-Station 采用CC3
    关于如何修改ATMEGA328P的PWM频率
    关于如何修改ATMEGA328P的
    在arduino开发中用到最多的就是atmega328p这个avr芯片了,常用的Nano, Uno开发板都是
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表