【问题标题】:Is there a C++ equivalent to np.frombuffer?是否有与 np.frombuffer 等效的 C++?
【发布时间】:2021-04-30 04:03:38
【问题描述】:

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

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

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

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

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

任何提示将不胜感激!

谢谢!

【问题讨论】:

  • 我认为最接近的等价物是将原始内容从 com_obj.read 转换为 uint16_t。

标签: python c++ arrays numpy


【解决方案1】:

如果读取返回(指向)正确对齐并匹配系统字节序的字节,您可以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);
}

【讨论】:

  • from_le_bytes() 是从哪里来的?
  • @MichaelSurette 这是一个函数的定义,所以就在那里
  • 感谢您的回答!我不知道如何将它应用到我的代码中,但我会阅读它并得出结论!
  • 事实证明,我不需要转换任何内容,因为这些值在收到时已正确格式化。它创造了所有新的头痛的阵列,但至少我现在明白了。再次感谢您的建议,它开启了新的见解!
猜你喜欢
  • 2017-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2010-12-23
  • 2011-07-14
相关资源
最近更新 更多