将vector <uint16>的一部分复制到double变量中

时间:2019-02-15 17:25:35

标签: c++ std memcpy

我有一个对象列表,其中有vector<uint16>个成员。
这些向量实际上捕获了与该对象有关的数据流。
数据流的长度范围为16-256位。

我有兴趣将向量的一部分切成double变量。

IE:

vector<uint16> data = { 00FA, 78BB, FFFF, 1234, 6C9D, ..., n }
double formatted_data = ( data from spot 0 to spot 3 )

memcpy()std::copy()是解决这个问题的方法吗?还是有更好的方法来做到这一点?

需要明确的是,数据的创建者也将值存储为双精度值,我收到的数据是该数据的内存表示形式。

1 个答案:

答案 0 :(得分:2)

内部向量成员函数调用data()可能在这里解决了您的问题:

memcpy(&formatted_data, data.data(), sizeof(double));

std::vector::data()返回一个指针,该指针指向内部维护的c样式数组中指定矢量的第一个元素。