C++ 从十六进制数组读取双精度向量

C++ 从十六进制数组读取双精度向量,c++,C++,我使用fread从文件中读取数据,使用下面的代码 vector<double> table; table.resize(10); fread(&table[0],table.size()*sizeof(double), 1, fp); 向量表; 表1.1(10); fread(&table[0],table.size()*sizeof(double),1,fp); 但现在我有一个十六进制值数组中的数据 像 const unsigned char data[]={0x50,

我使用fread从文件中读取数据,使用下面的代码

vector<double> table;
table.resize(10);
fread(&table[0],table.size()*sizeof(double), 1, fp);
向量表;
表1.1(10);
fread(&table[0],table.size()*sizeof(double),1,fp);
但现在我有一个十六进制值数组中的数据

const unsigned char data[]={0x50,0x11,0x12,…}

我知道从哪里读取数据的索引

int Index=100


那么如何从输入数组中读取double类型的数据并填充向量呢?

最简单的方法可能是使用旧的C mem*函数:

memcpy(&table[0], &data[Index], table.size() * sizeof(double));

您可以在数据周围使用内存流,因此反序列化的相同代码可以在打开的文件、内存或任何流上工作。

这与从文件中获得的非常相似,只是
重新解释转换(&data[100])。源和目标类型不一定要匹配吗?我认为OP本质上是询问类型双关语。编辑:哦,重新解释演员阵容的事情。当编译器决定它喜欢SSE时,这会给对齐带来麻烦。好吧,您可以使用强制转换。这将使实际操作更加清晰。是的,投射源指针并使用copy,是最清晰的,可以防止需要sizeof。嘎,忍者编辑出错了。我估计会有麻烦。请参见编辑上一条评论。