【发布时间】:2018-01-02 22:04:01
【问题描述】:
我想在 C 中将 4 个字节重新解释为 IEEE 754 单精度二进制。
为了获得代表float的字节,我使用了:
num = *(uint32_t*)&MyFloatNumber;
aux[0] = num & 0xFF;
aux[1] = (num >> 8) & 0xFF;
aux[2] = (num >> 16) & 0xFF;
aux[3] = (num >> 24) & 0xFF;
- num 是一个 uint32_t。
- aux[] 是 int[4]。
要将字节重新解释为float,我正在尝试:
Buff = *(float*)&aux;
在第二种情况下,“Buff”上没有任何内容
- Buff 是
float。
在第二种情况下我做错了什么?
【问题讨论】:
-
您尚未撤消原始(可疑)转换。
-
嗯
aux[]isint[4];并且代码正在使用它来convert BYTE to FLOAT?? -
这是XY problem?吗?
-
aux应该是char[4]或uint8_t[4] -
这些转换都没有有用的东西——我怀疑你实际上确实有一些有意义的转换,但我无法从这个问题中破译它。那么你到底想完成什么?
标签: c floating-point byte code-composer single-precision