16,472
社区成员
发帖
与我相关
我的任务
分享
CFile fParseTxtFile;
if(!fParseTxtFile.Open(szFileName,CFile::modeRead)) {
AfxMessageBox(_T("文件打开失败!"));
return;
}
int nDotSize = 0;
char szReadLine[1024] = {0};
arryData.RemoveAll();
int nReadByteSize = fParseTxtFile.Read(szReadLine,1024);
CString szLinetxt;
szLinetxt = CString(szReadLine,nReadByteSize);
DWORD dwLoadValue;
unsigned char *pDotsPtr = (unsigned char*)&dwLoadValue;
unsigned char readChar = 0;
unsigned char indexDot = 0;
while(!szLinetxt.IsEmpty()) {
CString szHexInfo;
USES_CONVERSION;
while(szLinetxt.GetLength() >= 2) {
if(byteCount == 0x1BE0) {
nCount = 61;
}
szHexInfo = szLinetxt.SpanIncluding(CString("0123456789ABCDEFabcdef"));
if(szHexInfo.IsEmpty()) {
if(szLinetxt.GetLength() >= 2) {
szLinetxt = szLinetxt.Mid(1);
continue;
}
}else if(szHexInfo.GetLength() < 2) {
break;
}else if(szHexInfo.GetLength() == 2) {
readChar = _strtoi64(T2A(szHexInfo),NULL,16);
if(indexDot == 0) {
*pDotsPtr = readChar;
}else if(indexDot == 1) {
*(pDotsPtr+1) = readChar;
}else if(indexDot == 2) {
*(pDotsPtr+2) = readChar;
if(readChar & 0x80) {
*(pDotsPtr+3) = 0xFF;
}else{
*(pDotsPtr+3) = 0x00;
}
}
indexDot = indexDot + 1;
if(indexDot == 3) {
arryData.Add(dwLoadValue);
byteCount++;
indexDot = 0;
}
szLinetxt = szLinetxt.Mid(szHexInfo.GetLength()+1);
}else{
int nHexBytesSize = szHexInfo.GetLength();
int nRemoveBytes = 0;
while(szHexInfo.GetLength() >= 2) {
CString sznewHexinfo = szHexInfo.Left(2);
readChar = _wtoi(sznewHexinfo);
if(indexDot == 0) {
*pDotsPtr = readChar;
}else if(indexDot == 1) {
*(pDotsPtr+1) = readChar;
}else if(indexDot == 2) {
*(pDotsPtr+2) = readChar;
if(readChar & 0x80)
*(pDotsPtr+3) = 0xFF;
else
*(pDotsPtr+3) = 0x00;
}
indexDot = indexDot + 1;
if(indexDot == 3) {
arryData.Add(dwLoadValue);
indexDot = 0;
}
szHexInfo = szHexInfo.Mid(2);
nRemoveBytes += 2;
}
if(szLinetxt.GetLength() > nHexBytesSize) {
szLinetxt = szLinetxt.Mid(nHexBytesSize + 1);
}else{
szLinetxt = szLinetxt.Mid(nRemoveBytes);
}
}
}
nReadByteSize = fParseTxtFile.Read(szReadLine,1024);
if(nReadByteSize == 0) {
break;
}
szLinetxt = szLinetxt + CString(szReadLine,nReadByteSize);
}
fParseTxtFile.Close();