C uint32阵列到浮动32阵列,就位
我在空间有限的环境中工作。我通过DMA收集一个无符号32位整数数组,但我需要在MCU中使用DSP扩展将它们作为单精度浮点进行处理。复制阵列是不可能的-它几乎占用了所有现有的SRAM。有没有一个简洁的方法可以做到这一点C uint32阵列到浮动32阵列,就位,c,C,我在空间有限的环境中工作。我通过DMA收集一个无符号32位整数数组,但我需要在MCU中使用DSP扩展将它们作为单精度浮点进行处理。复制阵列是不可能的-它几乎占用了所有现有的SRAM。有没有一个简洁的方法可以做到这一点 [注意]数据值只有12位,因此不存在超出范围的问题您可以这样做: uint32_t a[N]; float *f = (float *)a; for (i = 0; i < N; ++i) { f[i] = (float)a[i]; } uint32_t a[N
[注意]数据值只有12位,因此不存在超出范围的问题您可以这样做:
uint32_t a[N];
float *f = (float *)a;
for (i = 0; i < N; ++i)
{
f[i] = (float)a[i];
}
uint32_t a[N];
浮点数*f=(浮点数*)a;
对于(i=0;i
请注意,这会破坏严格的别名规则,因此您应该使用
-fno strict aliasing
或等效工具进行编译。您可以这样做:
uint32_t a[N];
float *f = (float *)a;
for (i = 0; i < N; ++i)
{
f[i] = (float)a[i];
}
uint32_t a[N];
浮点数*f=(浮点数*)a;
对于(i=0;i
请注意,这会破坏严格的别名规则,因此您应该使用
-fno strict aliasing
或等效工具进行编译。您可以这样做:
uint32_t a[N];
float *f = (float *)a;
for (i = 0; i < N; ++i)
{
f[i] = (float)a[i];
}
uint32_t a[N];
浮点数*f=(浮点数*)a;
对于(i=0;i
请注意,这会破坏严格的别名规则,因此您应该使用
-fno strict aliasing
或等效工具进行编译。您可以这样做:
uint32_t a[N];
float *f = (float *)a;
for (i = 0; i < N; ++i)
{
f[i] = (float)a[i];
}
uint32_t a[N];
浮点数*f=(浮点数*)a;
对于(i=0;i
请注意,这会破坏严格的别名规则,因此您应该使用
-fno strict aliasing
或等效工具进行编译。什么操作系统、CPU、编程语言?抱歉!纯香草CJust for completion,无操作系统,STM32F303x,Cortex M4“不可能复制阵列-它几乎占用所有现有SRAM”什么?你的MCU只有4字节的RAM?我的意思是阵列是16KB,剩余的总空间大约是4KB。操作系统、CPU、编程语言是什么?对不起!纯香草CJust for completion,无操作系统,STM32F303x,Cortex M4“不可能复制阵列-它几乎占用所有现有SRAM”什么?你的MCU只有4字节的RAM?我的意思是阵列是16KB,剩余的总空间大约是4KB。操作系统、CPU、编程语言是什么?对不起!纯香草CJust for completion,无操作系统,STM32F303x,Cortex M4“不可能复制阵列-它几乎占用所有现有SRAM”什么?你的MCU只有4字节的RAM?我的意思是阵列是16KB,剩余的总空间大约是4KB。操作系统、CPU、编程语言是什么?对不起!纯香草CJust for completion,无操作系统,STM32F303x,Cortex M4“不可能复制阵列-它几乎占用所有现有SRAM”什么?你的MCU只有4字节的RAM?我的意思是数组是16KB,剩余的总空间大约是4kbah。他是说将uint32值转换为float32,对吗?我想他想把uint32ah中原始二进制的浮点值转换成float32,对吗?我想他想把uint32ah中原始二进制的浮点值转换成float32,对吗?我想他想把uint32ah中原始二进制的浮点值转换成float32,对吗?我认为他想将浮点数从uint32中的原始二进制文件转换成浮点数