将 int32_t 转换为 std::complex<float>

casting int32_t to std::complex<float>

我通过有线协议接收一些数据。我收到的一个数据包有一些 int32_t 值代表复数。即 10 个复数以 20 个 int32_t 值的形式出现(real,imag)。

我需要将 int32_t 转换为浮点数并将这些值复制到向量 > 中。我不确定执行此操作的首选方法。

这可行,但确实很丑陋且值得怀疑。这是一个 sudo 实时系统,我需要尽可能快的操作。

float coefBuffer[20];
std::transform(packet.coef,packet.coef+20,coefBuffer, [](int32_t x) { return (float)x;});
std::memcpy(complexFloatVector.data(),coefBuffer,sizeof(float)*20);

我尝试了很多种转换,没有找到更好的解决方案。

感谢任何建议。

怎么样:

for ( uint32_t j=0; j<10; ++j ) {
    complexFloatVector[j] = std::complex<float>(packet.coef[2*j],packet.coef[2*j+1]);
}

不要想太多

complexFloatVector.resize(10);
for (size_t i = 0; i < 10; i++)
{
    complexFloatVector[i] = std::complex<float>((float)(packet.coef[i * 2]), (float)(packet.coef[i * 2 + 1]));
}

我假设 complexFloatVector 是一个 std::vector<std::complex<float>> 类型,packet.coef 是一个包含 20 个整数的数组。