数据拆分操作 代码
1.数据拆分宏定义
- #define BYTE0(dwTemp) ( *( (char *)(&dwTemp) ) )
- #define BYTE1(dwTemp) ( *( (char *)(&dwTemp) + 1) )
- #define BYTE2(dwTemp) ( *( (char *)(&dwTemp) + 2) )
- #define BYTE3(dwTemp) ( *( (char *)(&dwTemp) + 3) )
在通讯中经常需要把数据拆成字节的形式,有多种方法这里是其中一种比较好用的方法
大致的处理过程是 对变量 dwTemp 去地址,然后将其强制转化成char类型的指针 最后再取出指针所指向的内容,这样就完成了对数据的拆分工作
能完成这种功能的还有种写法就是利用结构体,准确说是联合体示例如下
- typedef union
- {
- uint16_t u16_vale;
- uint8_t bytes[2];
- }u16_type_u;
- int mian ()
- {
- u16_type_u u16;
- u16.bytes[0] = 10;
- u16.bytes[1] = 1;
- printf ("%d \n",&u16.u16_value);
- return 0;
- }
以上均可以完成数据的拆分工作.
2.充当内联函数使用
示例如下:
- #define LED1(a) if (a) \
- GPIO_SetBits(GPIOB,GPIO_Pin_0);\
- else \
- GPIO_ResetBits(GPIOB,GPIO_Pin_0)
关于内联函数,有如下示例大致可说明含义
- inline int max (int i ,int j, int k)
- {
- if (i<j)
- i = j;
- if (i<k)
- i = k;
- return i;
- }
内联函数的优势在于减少频繁的调用可节省资源