uint32数组到float32数组,到位

时间:2014-09-10 07:46:01

标签: c

我在空间有限的环境中工作。我通过DMA收集一组无符号32位整数,但我需要使用MCU中的DSP扩展将它们作为单精度浮点数进行处理。无法复制阵列 - 它几乎占用了所有现有的SRAM。有一个巧妙的方法来做到这一点?

[注意]数据值仅为12位,因此不存在超出范围的问题

1 个答案:

答案 0 :(得分:3)

你可以这样做:

uint32_t a[N];

float *f = (float *)a;

for (i = 0; i < N; ++i)
{
    f[i] = (float)a[i];
}

请注意,这会破坏严格的别名规则,因此您应该使用-fno-strict-aliasing或同等版本进行编译。