文件以二进制读取,每四个字节表示一个数据,如何转换为十进制
数据按照二进制读取:
读取的数据要求说明:
OBJECT =COLUMN
NAME ="Longitude 1"
COLUMN_NUMBER =3
DATA_TYPE =IEEE_REAL
START_BYTE =10
BYTES =4
FORMAT ="F9.4"
UNIT =Degree
DESCRIPTION ="N/A "
END_OBJECT =COLUMN
我写的代码为:(只是摘抄了一部分,文件有34982行记录,假设一行516字节,前4个为附加信息,后512为元数据)
void CReadBinary::ReadCcd()
{
CStdioFile file; //
DWORD Log;
int i;
if(!file.Open(InFile,CFile::modeRead|CFile::typeBinary)) //二进制打开
{
AfxMessageBox("Open file failed!");
}
float nlog = 0.0;
unsigned char *tmpLog = new unsigned char[1];
WORD *tmplog = new WORD[2];
float *pLog = new float[34982];
unsigned char *tmpData = new unsigned char[512]; //为Data数据设置缓冲区512字节
memset(tmpLog,0,4);
memset(tmplog,0,2);
memset(pLog,0,34982);
memset(tmpData,0,512);
int num=0;
FILE* fp;
fp = fopen(OutFile,"wb");
for (i=0;i<34982;i++)
{
file.Read(tmpLog,4);
UINT nBytesRead=file.Read(tmpData,512);
if (nBytesRead==0)
{
break;
}
else
{
tmplog[0]= MAKEWORD(tmpLog[1],tmpLog[0]);
tmplog[1]= MAKEWORD(tmpLog[3],tmpLog[2]);
Log = MAKELONG(tmplog[1],tmplog[0]);
pLog[i]= Log
fprintf(fp,"%5d %9.4f\r\n",num,pLog[i];
}
}
num++;
}
读出的结果感觉不对,各位大侠给个建议,感激不尽。