C++分割文件并进行BASE64编码
发布时间:2020-12-16 07:43:31 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #include stringusing namespace std;string Encode(char* Data,long DataByte){ //编码表 const char EncodeTable[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabc
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #include <string> using namespace std; string Encode(char* Data,long DataByte) { //编码表 const char EncodeTable[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //返回值 string strEncode; unsigned char Tmp[4]={0}; for(long i=0;i<DataByte / 3;i++) { Tmp[1] = *Data++; Tmp[2] = *Data++; Tmp[3] = *Data++; strEncode+= EncodeTable[Tmp[1] >> 2]; strEncode+= EncodeTable[((Tmp[1] << 4) | (Tmp[2] >> 4)) & 0x3F]; strEncode+= EncodeTable[((Tmp[2] << 2) | (Tmp[3] >> 6)) & 0x3F]; strEncode+= EncodeTable[Tmp[3] & 0x3F]; } //对剩余数据进行编码 int Mod=DataByte % 3; if(Mod==1) { Tmp[1] = *Data++; strEncode+= EncodeTable[(Tmp[1] & 0xFC) >> 2]; strEncode+= EncodeTable[((Tmp[1] & 0x03) << 4)]; strEncode+= "=="; } else if(Mod==2) { Tmp[1] = *Data++; Tmp[2] = *Data++; strEncode+= EncodeTable[(Tmp[1] & 0xFC) >> 2]; strEncode+= EncodeTable[((Tmp[1] & 0x03) << 4) | ((Tmp[2] & 0xF0) >> 4)]; strEncode+= EncodeTable[((Tmp[2] & 0x0F) << 2)]; strEncode+= "="; } return strEncode; } CFileDialog dlg(TRUE,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("All Files(*.*)|*.*|")); if(dlg.DoModal()==IDOK) { CFile m_splitFile; if(m_splitFile.Open(dlg.GetPathName(),CFile::modeRead | CFile::shareDenyWrite)) { CString targetPath="D:"; CString m_fileTitle=m_splitFile.GetFileName(); DWORD FileLength=m_splitFile.GetLength(); DWORD PartLength=1024*512; int nCount=1; CString strName; CFile wrFile; DWORD ReadBytes; char* pBuf=new char[PartLength]; while((ReadBytes=m_splitFile.Read(pBuf,PartLength))>=PartLength) { strName.Format("%s%s%d.enc",targetPath,m_fileTitle,nCount++); wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate); string encStr=Encode(pBuf,ReadBytes); wrFile.Write(encStr.c_str(),encStr.size()); wrFile.Flush(); wrFile.Close(); } if(nCount==1 && ReadBytes<PartLength) { strName.Format("%s%s.enc",encStr.size()); wrFile.Flush(); wrFile.Close(); } m_splitFile.Close(); delete pBuf; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- XML----语法
- ruby-on-rails – 固定装置和Selenium和Rails(哦,我的?)
- [swift]-闭包的简单使用、定义
- UPDATE FROM子句中的postgresql – GROUP BY
- ajax中dataType中的类型
- c – 如何组合std :: copy_if和std :: transform?
- 正则表达式 – 在fail2ban过滤器中使用反向引用可能吗?
- ruby-on-rails – 如何处理ActiveSupport :: JSON和JSON ge
- JSON.NET JsonConvert vs .NET JavaScriptSerializer
- c – waitpid()的使用示例?