物联网中常用的数据处理方法

简介: 取出某一段数据中的某部分数据

取出某一段数据中的某部分数据

/***********************************************************
  函数名称:Find_string(char *pcBuf,char*left,char*right, char *pcRes)
  函数功能:寻找特定字符串
  入口参数:
           char *pcBuf 为传入的字符串
           char*left   为搜索字符的左边标识符  例如:"["
           char*right  为搜索字符的右边标识符  例如:"]"
                     char *pcRes 为输出转存的字符串数组
  返回值:用来校验是否成功,无所谓的。
  备注: left字符需要唯一,right字符从left后面开始唯一即可
 服务器下发命令举例:+MQTTPUBLISH: 0,0,0,0,/device/NB/zx99999999999999_back,6,[reastrobot]
 如要取出 IMEI:4569874236597\r\n  中的数字4569874236597
***********************************************************/
int Find_string(char *pcBuf,char *left,char *right, char *pcRes)
{
    char *pcBegin = NULL;
    char *pcEnd = NULL;
    pcBegin = strstr(pcBuf, left);//取出左边数据
    pcEnd = strstr(pcBegin+strlen(left), right);//扫描右边标识
    if(pcBegin == NULL || pcEnd == NULL || pcBegin > pcEnd)
    {
        printf("string name not found!\n");
        return 0;
    }
    else
    {
        pcBegin += strlen(left);
        memcpy(pcRes, pcBegin, pcEnd-pcBegin);
        return 1;
    }
}

strstr使用方法

https://www.runoob.com/cprogramming/c-function-strstr.html

解释:

C 库函数char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。

声明

下面是 strstr() 函数的声明。

char *strstr(const char *haystack, const char *needle)

参数

haystack -- 要被检索的 C 字符串。
needle -- 在 haystack 字符串内要搜索的小字符串。

返回值

该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。

实例

下面的实例演示了 strstr() 函数的用法。
实例

#include <stdio.h>
#include <string.h> 
int main()
{
   const char haystack[20] = "RUNOOB";
   const char needle[10] = "NOOB";
   char *ret; 
   ret = strstr(haystack, needle); 
   printf("子字符串是: %s\n", ret);   
   return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

子字符串是: NOOB

memcpy()使用方法

https://www.runoob.com/cprogramming/c-function-memcpy.html

一、memset

void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节(typedef unsigned int size_t)用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方。

memset()函数原型是
               extern void *memset(void *buffer, int c, int count) 
               buffer:为指针或是数组,
                c:是赋给buffer的值,
                count:是buffer的长度.

memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
memset的作用就是把str这个数组中的值初始化为0

二、sprintf

# include<stdio.h>
int sprintf(char *str, char *format ,...);

功能:

根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符'\0'为止。

参数:

参数列表

str:字符串首地址
format:这是字符串,包含了要被写入到字符串str的文本,可以包含嵌入的format标签
...:根据不同的format字符串,函数可能需要一系列的附加参数

返回值:

成功:实际格式化字符的个数
失败:-1

例子:
编译环境为VS2017,是在c环境下编译,同时为了不使sprintf函数出错,需要 右键单击工程名——>属性——>C/C++——>常规——>SDL检查(将SDL检查改为否)

    #include<stdio.h>
    #include<string.h>
    #define a "hello"
    #define b "world"
    int main()
    {
        //1.格式化字符串 
        char buf[1024];
        sprintf(buf, "hello %s", "world");
        printf("buf:%s\n", buf);
        printf("len:%d\n\n", strlen(buf));

        //2.拼接字符串 
        char temp[1024];
        char *s1 = "hello";
        char *s2 = "world";
        memset(temp, 0, 1024);
        sprintf(temp, "%s %s", s1,s2);
        printf("buf:%s\n", temp);
        printf("len:%d\n\n", strlen(temp));

        //2.1拼接字符串 
        char str[1024];
        sprintf(str, "%s %s", a, b);
        printf("buf:%s\n", str);
        printf("len%d\n\n", strlen(str));

        //3.数字转换成字符串打印出来
        char num[1024];
        int number = 666;
        memset(num, 0, 1024);
        sprintf(num, "%d", number);
        printf("buf:%s\n", num);
        printf("len:%d\n\n", strlen(num));

        //4.设置宽度右对齐
        char buffer[1024];
        memset(buffer, 0, 1024);
        sprintf(buffer, "%8d", number);
        printf("buf:%s\n", buffer);
        printf("len:%d\n\n", strlen(buffer));

        //5.设置宽度左对齐
        memset(buffer, 0, 1024);
        sprintf(buffer, "%-8d", number);
        printf("buf:%s\n", buffer);
        printf("len:%d\n\n", strlen(buffer));

        //6.转换成16进制字符串 小写
        memset(buffer, 0, 1024);
        sprintf(buffer, "0x%x", number);
        printf("buf:%s\n", buffer);
        printf("len:%d\n\n", strlen(buffer));

        //6.转换成8进制字符串
        memset(buffer, 0, 1024);
        sprintf(buffer, "0%o", number);
        printf("buf:%s\n", buffer);
        printf("len:%d\n\n", strlen(buffer));
    }
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
边缘计算 人工智能 运维
满足数据处理超高要求,阿里云物联网高性能边缘计算3.0发布
边缘计算3.0框架以低成本、高性能、稳定可靠的能力,协同企业打造多品类智能化产品。
563 0
满足数据处理超高要求,阿里云物联网高性能边缘计算3.0发布
|
Cloud Native 多模数据库 物联网
《云原生多模数据库Lindorm:物联网的数据处理平台》电子版地址
云原生多模数据库Lindorm:物联网的数据处理平台-final
142 0
《云原生多模数据库Lindorm:物联网的数据处理平台》电子版地址
|
传感器 边缘计算 物联网
海量的物联网数据处理应该怎么部署
目前,许多企业正在采用物联网来使用数据,从而更好地了解其运营情况,做出更明智的决策,重新定位客户参与度,并重新思考如何创造价值。随着低成本传感器,弹性计算和数据科学的快速发展,许多行业观察家期望企业迅速部署物联网设备。
1374 0
|
消息中间件 关系型数据库 Kafka
PostgreSQL "物联网"应用 - 1 实时流式数据处理案例(万亿每天)
物联网的特点是万物联网,会产生大量的数据。 例如 : 一盒药,从生产,到运输,到药店,到售卖。每流经一个节点,都会记录它的信息。 又如 : 健康手环,儿童防丢手表,一些动物迁徙研究的传感器(如中华鲟),水纹监测,电网监测,煤气管道监测,气象监测等等这些信息。 股价的实时预测。 车流实时
20977 0
|
24天前
|
存储 安全 物联网
未来技术纵横谈:区块链、物联网和虚拟现实的革新之路
在科技不断进步的今天,新兴技术正以前所未有的速度改变着我们的生活和工作方式。本文将深入探讨区块链、物联网(IoT)以及虚拟现实(VR)这三项技术的发展趋势与潜在应用场景,揭示它们如何塑造一个更加智能、互联和沉浸式的未来世界。通过对这些技术的综合分析,我们旨在提供一个全面的视角,以理解它们在未来社会结构中的重要性及影响。
22 7
|
8天前
|
存储 供应链 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【4月更文挑战第7天】 在数字化浪潮推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正不断重塑我们的工作、生活方式及商业模式。本文将深入探讨这些技术的发展趋势,以及它们如何相互交织,共同构建一个更加智能、互联和沉浸式的未来世界。区块链技术以其不可篡改的数据记录和去中心化特性,为安全性和透明度设立了新标准;物联网通过使设备智能化和网络化,推动了自动化和效率的飞跃;而虚拟现实则在娱乐、教育和医疗等领域开辟了前所未有的交互体验。文章还将剖析这些技术在实际应用中的案例,展示它们如何联合起来推动创新。
11 0
|
11天前
|
存储 安全 物联网
未来技术的融合与创新:区块链、物联网和虚拟现实的新趋势
【4月更文挑战第5天】 随着科技的不断发展,新兴技术如区块链、物联网和虚拟现实等正在逐渐改变我们的生活和工作方式。这些技术不仅在各自的领域取得了显著的进展,而且开始相互融合,为未来的应用提供了无限的可能性。本文将探讨这些新兴技术的发展趋势和应用场景,以及它们如何共同推动技术创新和社会进步。
|
12天前
|
存储 边缘计算 物联网
关于物联网的技术与概念
关于物联网的技术与概念
23 4
|
18天前
|
安全 物联网 区块链
未来技术的融合潮流:区块链、物联网与虚拟现实的革新之旅
随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)等正在重塑我们的世界。本文将深入探讨这些技术的发展趋势和潜在应用场景,揭示它们如何相互交织,共同推动第四次工业革命的浪潮。区块链技术以其独特的去中心化特性和不可篡改的数据记录能力,为安全性和透明度树立了新标准;物联网通过智能设备和传感器的广泛部署,实现了现实世界与数字世界的无缝对接;而虚拟现实则在沉浸式体验上开辟了前所未有的空间。这些技术的融合预示着一个更加智能、互联和互动的未来。
|
21天前
|
供应链 安全 物联网
未来交织:区块链技术、物联网与虚拟现实的融合革新
随着技术的迅猛发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在重塑我们的世界。本文将深入探讨这些技术的发展趋势,并分析它们在不同应用场景中的融合与创新。区块链提供的安全性和去中心化特征,物联网实现的智能设备互联,以及虚拟现实创造的沉浸式体验,三者结合预示着一个高度自动化、安全和交互性极强的未来。从金融到医疗,从教育到娱乐,这些技术的结合将推动多个行业的变革。

相关产品

  • 物联网平台