zoukankan      html  css  js  c++  java
  • 数据拆分操作 代码

    1.数据拆分宏定义

    [plain] view plain copy
     
    1. #define BYTE0(dwTemp)       ( *( (char *)(&dwTemp)    ) )  
    2. #define BYTE1(dwTemp)       ( *( (char *)(&dwTemp) + 1) )  
    3. #define BYTE2(dwTemp)       ( *( (char *)(&dwTemp) + 2) )  
    4. #define BYTE3(dwTemp)       ( *( (char *)(&dwTemp) + 3) )  

    在通讯中经常需要把数据拆成字节的形式,有多种方法这里是其中一种比较好用的方法

    大致的处理过程是 对变量 dwTemp 去地址,然后将其强制转化成char类型的指针  最后再取出指针所指向的内容,这样就完成了对数据的拆分工作

     能完成这种功能的还有种写法就是利用结构体,准确说是联合体示例如下

    [html] view plain copy
     
    1. typedef union   
    2. {  
    3.     uint16_t u16_vale;  
    4.     uint8_t bytes[2];  
    5. }u16_type_u;  
    [html] view plain copy
     
    1. int mian ()  
    2. {  
    3.     u16_type_u u16;  
    4.     u16.bytes[0] = 10;  
    5.     u16.bytes[1] = 1;  
    6.     printf ("%d  ",&u16.u16_value);  
    7.     return 0;  
    8. }  


    以上均可以完成数据的拆分工作.

    2.充当内联函数使用

    示例如下:

    [html] view plain copy
     
    1. #define LED1(a) if (a)    
    2.                     GPIO_SetBits(GPIOB,GPIO_Pin_0);  
    3.                     else          
    4.                     GPIO_ResetBits(GPIOB,GPIO_Pin_0)  

    关于内联函数,有如下示例大致可说明含义

    [html] view plain copy
     
    1. inline int max (int i ,int j, int k)  
    2. {  
    3.     if (i<j)  
    4.     i = j;  
    5.     if  (i<k)  
    6.     i = k;  
    7.     return i;  
    8. }  

    内联函数的优势在于减少频繁的调用可节省资源

  • 相关阅读:
    http 协议相关问题
    网卡中断及多队列
    Visual Studio Code 配置C/C++环境
    C++通用框架和库
    命令行的艺术
    NetScaler Logs Collection Guide
    C++性能榨汁机之无锁编程
    Codeforces 839E Mother of Dragons【__builtin_popcount()的使用】
    C/C++中__builtin_popcount()的使用及原理
    Codeforces 839D Winter is here【数学:容斥原理】
  • 原文地址:https://www.cnblogs.com/ly0019/p/9109532.html
Copyright © 2011-2022 走看看