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

Reinterpreting array of 8bit values as standard complex values?

本文关键字:解释 标准 数组 新解释      更新时间:2023-10-16

我在缓冲区中接收一个复数值数组(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 在不创建第二个缓冲区并复制数据的情况下执行此操作吗?

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

如果您的库确实支持该专用化作为非标准扩展,那么希望它还将提供与支持类型相同的保证:将基础类型的数组重新解释为复杂类型的数组一半,可以按照您的要求工作。如果是这种情况,那么代码应该像现在一样适用于complex<int16_t>类型。