|
发表于 2013-2-19 21:02:57
|
显示全部楼层
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- typedef union
- {
- uint8_t CharArray[4];
- uint16_t IntArray[2];
- float FloatValue;
- }Float2Array_TypeDef;
- Float2Array_TypeDef Float2Array;
- int main(void)
- {
- Float2Array.FloatValue = 1.11;
- printf("float:%.2f\n",Float2Array.FloatValue);
- printf("Char Array:%02x,%02x,%02x,%02x\n",\
- Float2Array.CharArray[0],\
- Float2Array.CharArray[1],\
- Float2Array.CharArray[2],\
- Float2Array.CharArray[3]);
- printf("Int Array:%04x,%04x\n",Float2Array.IntArray[0],Float2Array.IntArray[1]);
- return EXIT_SUCCESS;
- }
复制代码 运行结果
float:1.11
Char Array:7b,14,8e,3f
Int Array:147b,3f8e
测试编译器 MinGW(小端模式,低字节位于低地址)
在内存中数据的存放顺序(低地址在前) 7b,14,8e,3f
这个好理解,如果以uint16来排序的话,存放顺序为(低地址在前)147b,3f8e
请注意此时不是7b14,8e3f(第0个字节为整型的低8位,第1个字节为整型的高8位) |
|