我在将 unsigned long 转换为 Float 单精度时遇到问题这是我的问题
我需要在我的程序中以浮点数进行通信,但我所有的内部变量都是无符号长的,所以我们决定的设计是一切都将保持不变,(无符号长)并且一旦需要给应用程序一个浮点数,我将转换为浮动并传递它。
所以所有的变量都会有一个 IEEE 754 比特流,根据
我遵循的步骤:
- 我得到 char 数组中的值
- 我把这些位复制到一个无符号长
- 在提供函数调用数据时,我将类型转换为浮点单精度。
在调试器中,我看到第 1 步和第 2 步的位模式(在缓冲区中)相同
在第 3 步中,我也看到了相同的二进制模式,但该值不被解释为浮点数
输入:21.125
- 二进制:01000001101010010000000000000000
- 十六进制:0x41a90000
十进制:1101594624
Code: void ApplicationApi(void * DataPtr) { (*(float32*)((void*)DataPtr))= unsignedLong_val; }
结果应用程序 DataPtr * DataPtr = 1.101594624 * e9
我在这里遗漏了什么或类型案例有效吗?