我需要将uint8_t数组中的元素复制到float数组中。
我写了一个简单的功能,立即浮现在我脑海中。
float *uint8_t_mas_to_float_mas(uint8_t *src, int size)
{
float *dst = NULL;
if (!src)
return NULL;
dst = (float*)calloc(size, sizeof(float));
if (!dst)
return NULL;
for (int i = 0; i < size; i++)
dst[i] = (float)src[i];
return dst;
}
但我认为这不是有效的,不幸的是我无法想出其他的东西。
有人可以帮忙吗?
谢谢。
答案 0 :(得分:0)
你应该这样写(等价):
float *uint8_t_mas_to_float_mas(uint8_t *src, int size)
{
if (!src)
return NULL;
float *dst = (float*)malloc(size*sizeof(float));
if (!dst)
return NULL;
for (int i = 0; i < size; i++)
dst[i] = (float)src[i];
return dst;
}
这完全没问题。让优化器完成它的工作。瓶颈是malloc
调用 - 所以你不需要在这里做任何事情,除非你要复制数百万个元素。