如何从vector<char>中提取不同数据类型的子向量?

How to extract sub-vectors of different datatypes from vector<char>?

我有一个 std::vector<char> data 表示来自网络字节流的数据以及作为整数值的不同偏移量。我知道该向量包含 4x4 轨迹矩阵(32 位浮点数)、RGB 图像(Unity TextureFormat.RGB24) and a gray scale image (Unity TextureFormat.RFloat)的数据。

我需要做的是从此数据中提取以下内容:

我想使用 Open3D 对 RGBD 图像进行 TSDF 体积集成。 我有与 python 脚本相同的设置(简单地使用 numpy 数组作为数据缓冲区),但需要在 C++ 中重写它,我很不确定如何最好地进行这些转换。

您需要将字节复制到正确类型的对象中

std::vector<char> data = /* get from network */;
Eigen::Matrix4d trajectory;
std::vector<uint8_t> rgb_image_data(rgb_image_size);
std::vector<uint8_t> gray_image_data(gray_image_size);

std::memcpy(&trajectory, data.data() + trajectory_offset, sizeof(Eigen::Matrix4d));
std::memcpy(rgb_image_data.data(), data.data() + rgb_image_offset, rgb_image_size);
std::memcpy(gray_image_data.data(), data.data() + gray_image_offset, gray_image_size);

这是假设源是整个 Eigen::Matrix4d 复制的,而不是它包含的 double[4][4]