是否有等效于 np.frombuffer 的 C++?

时间:2021-01-26 11:08:32

标签: python c++ arrays numpy

我正在通过一个简单的 STM32 蓝色药丸 MCU 从雷达读取一些数据。 我有一些用 Python 和 Matlab 编写的代码示例并将其翻译成 C++。

我无法正常工作的一件事是以下位。 Python代码:

TDAT_Distance = np.frombuffer(com_obj.read(2), dtype=np.uint16)

我收到了一个 UINT16 小端。 TDAT_Distance 是变量 np.frombuffer 的值从串行读取 2 个字节并设置数据类型。

在 C++ 中,我尝试将字节读入数组,但没有得到预期的结果。

任何提示将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

如果读取返回(指向)正确对齐且与系统字节序匹配的字节,您可以reinterpret_cast<uint16_t *>(com_obj.read(sizeof(uint16_t)));

这可能不太可能,因此您可以使用正确的值构造一个 uint16_t

uint16_t from_le_bytes(const unsigned char * bytes)
{
    return bytes[0] | (bytes[1] << 8);
}