C:读取二进制文件

时间:2012-03-13 00:07:41

标签: c binary

我通常不使用二进制文件,所以如果答案显而易见,我会道歉。我可以使用以下命令从某个二进制文件中读取正常的内容:

nread = fread(&data[0],sizeof(float),maxpts,fptr);

二进制文件是一种标准化的科学格式,似乎数据存储为浮点数。我宁愿将这些数据读入double类型的数组中,当我尝试简单地将数据类型切换为double(来自float),并且将sizeof(float)保持不变时,它不能正确检索我的数据。我该怎么做呢?谢谢,扎克。

2 个答案:

答案 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];
}