我通常不使用二进制文件,所以如果答案显而易见,我会道歉。我可以使用以下命令从某个二进制文件中读取正常的内容:
nread = fread(&data[0],sizeof(float),maxpts,fptr);
二进制文件是一种标准化的科学格式,似乎数据存储为浮点数。我宁愿将这些数据读入double类型的数组中,当我尝试简单地将数据类型切换为double(来自float),并且将sizeof(float)保持不变时,它不能正确检索我的数据。我该怎么做呢?谢谢,扎克。
答案 0 :(得分:3)
您需要将数据作为浮点数读取并通过批量赋值将其转换为双精度数(例如,读入浮点数组,具有单独的双精度数组,并且对于每个元素,设置doubleArray[i] = floatArray[i]
)
有些方法可以加快这个过程(通过利用浮动和双打存储的具体事实),但它可能不值得,特别是因为它可能会引入微妙的不准确。
答案 1 :(得分:2)
您可以以float精度读取数据,然后分配双精度数组,然后使用for循环手动填充双精度数组。
请参阅我之前的一个问题How can I perform conversion from float -> double -> float when processing an audio buffer in c++
基本上。 。
doubleArray=malloc(numElements*sizeof(double));
for (int nn=0; nn<numElements; ++nn)
{
doubleArray[nn] = floatArray[nn];
}