急~~~~~~CFile读取文件后怎么把文件中的内容以十六进制数转存到u_char array中
在做一个测试程序,把图片文件打包成自定义格式的以太网帧。分割用的是下面的class,发送用WinPcap现在用CFile读取图片后能把数据分成小块并写出。怎么把每个分割后的数据写入u_char中啊?C++/MFC新手。。请多加指教
const char FramePacker::_leadercode[8] = {0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB};void FramePacker::SetDestMac(char * lpDestMac){ memcpy(_destmac,lpDestMac,6);}void FramePacker::SetSourMac(char * lpSourMac){ memcpy(_sourmac,lpSourMac,6);}void FramePacker::SetInputFile(CString & in_file){ _fi = in_file;}void FramePacker::SetOutputFile(CString & out_file){ _fo = out_file;}DWORD FramePacker::PackUp(void){ CFile * fo,fi(_fi,CFile::typeBinary | CFile::modeRead | CFile::shareDenyWrite); ULONGLONG in_size = fi.SeekToEnd(); int frame_len,id = 0; bool bMultiFile = false; BYTE b; fi.SeekToBegin(); if(in_size > MAX_DATA_SIZE) { bMultiFile = true; } while(in_size > 0) { char buf[MAX_DATA_SIZE]; CString file_name(_fo); if(bMultiFile) file_name.Format("%s%03d",_fo,id ++); fo = new CFile(file_name,CFile::modeCreate | CFile::typeBinary | CFile::modeWrite | CFile::shareDenyWrite); if(fo != NULL) { if(in_size < MIN_DATA_SIZE) { fi.Read(buf,in_size); _len = NOT_DATA_LEN + in_size; frame_len = MIN_DATA_SIZE; in_size = 0; } else if(in_size > MAX_DATA_SIZE) { fi.Read(buf,MAX_DATA_SIZE); _len = 1518; frame_len = MAX_DATA_SIZE; in_size -= MAX_DATA_SIZE; } else { fi.Read(buf,in_size); _len = in_size + NOT_DATA_LEN; frame_len = in_size; in_size = 0; } fo->Write(_leadercode,8); fo->Write(_destmac,6); fo->Write(_sourmac,6); b = HIBYTE(_len); // network order fo->Write(&b,1); b = LOBYTE(_len); fo->Write(&b,1); fo->Write(buf,frame_len); CCrc32Static::FileCrc32Win32(file_name,_crc); fo->Write(&_crc,4); fo->Close(); } else { break; } delete fo; } if(! bMultiFile) { return _crc; } else return 0;}