我在空间有限的环境中工作。我通过DMA收集一组无符号32位整数,但我需要使用MCU中的DSP扩展将它们作为单精度浮点数进行处理。无法复制阵列 - 它几乎占用了所有现有的SRAM。有一个巧妙的方法来做到这一点?
[注意]数据值仅为12位,因此不存在超出范围的问题
答案 0 :(得分:3)
你可以这样做:
uint32_t a[N];
float *f = (float *)a;
for (i = 0; i < N; ++i)
{
f[i] = (float)a[i];
}
请注意,这会破坏严格的别名规则,因此您应该使用-fno-strict-aliasing
或同等版本进行编译。