数据类型转换
来源:互联网 发布:金蝶软件客服中心 编辑:程序博客网 时间:2024/06/01 08:53
数据类型转换
STM32中各种格式的长度
- Byte:8位 即uint8_t
- unsigned short(WORD):16位 即uint16_t
- unsigned int(DWORD):32位 即uint32_t
- unsigned long: 32位 即uint32_t
下面转换思路,采用联合体结构,利用了联合体的特性,即内部的类型是共享同一个地址的。
1、字节转字
BYTE<—>WORD 8位变16位
定义一个联合体:
typedef union tagW2BY{ WORD wValue; //一个字 BYTE byDst[2]; //两个字节}tagBY2W;void BY2W(BYTE* bySrc, WORD* wDst){ tagBY2W uTag; //将字节的值复制到Word上 memcpy(uTag.byDst, bySrc, sizeof(WORD)); //输出Word的值 *wDst = uTag.wValue;}void W2BY(WORD wSrc, BYTE* byDst){ tagBY2W uTag; //将Word的值复制到联合体中 uTag.wValue = wSrc; //将值通过指针输出 memcpy(byDst, uTag.byDst, sizeof(WORD));}
同理WORD与DWORD转换也使用一个联合体
typedef union tagW2DW{ DWORD dwValue; WORD wDst[2];}tagDW2W;
上面的这个这种转换是利用了union里面的各类型的地址一样,但是其中也存在一个问题就是,从WORD、DWORD转换到BYTE中,会受到目标主机的存储格式的影响,譬如在STM32 中,WORD、DWORD的存储是按小段模式存储的,即低地址放数据低位,高地址放数据高位(详看单片机存储中的大小端模式)。这个会反映到BYTE 数据里面。这个是要注意的事项。
0 0
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 网易+阿里面经
- 关于yii2 treemanager插件中lft和rgt的说明
- Oracle 数据库基础
- HotSpot学习第一天
- java移位运算符
- 数据类型转换
- 【51Nod】1284 - 2 3 5 7的倍数(容斥原理 & 二进制优化)
- python中关于下划线的整理
- java:applet的实现
- 删数问题 贪心法
- ajax使用params
- UML-活动图
- 捋顺Struck SVM------之--------从一堆sample中选出一些作为sv的准则
- awstats CGI模式下动态生成页面缓慢的改进