将8位值数组重新解释为标准复数值?

时间:2014-12-08 17:06:50

标签: c++

我在缓冲区中收到一个复数值(16位整数)数组。在过去,我处理过这样的情况:

typedef struct {
    int16_t re;
    int16_t im;
} complex_16_t;

uint8_t * buffer;

// after receiving data into buffer pointer
foo((complex_16_t *) data, length);

我现在必须使用std::complex数据类型作为我的函数foo的输入而不是我自己的结构。我可以使用std::complex来创建第二个缓冲区并复制数据吗?

1 个答案:

答案 0 :(得分:1)

不便携。 std::complex仅针对浮点类型指定,而不是int16_t

如果您的库确实支持该特殊化作为非标准扩展,那么希望它也将提供与支持的类型相同的保证:将基础类型的数组重新解释为一半复杂类型的数组工作如你所愿。如果是这种情况,那么您的代码应与complex<int16_t>一起使用,现在与您的类型一起使用。