把二进制字符读入变量中的问题? 我要把一个很小的BMP单色位图中的二进制字符读入一个unsigned char 类型的变量中,但是在位图中424D0000000000...等数据中的00相当于'\0',只有bm可以输出,我该怎么办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我要二进制数据以unsigned char *的形势传入到一个函数处理(把它处理成条形码(二维的))。 '\0'指c类型字符串的结束,你又不是把它当字符串,又不把它付给字符串变量,又什么关系。memcpy直接拷,给出长度。还得new一个区域或事先定义好的区域。 CFile fLoadBinary; CFileException e; CFileDialog fdlgLoadBinary(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"All Files(*.*)|*.*",NULL); if (fdlgLoadBinary.DoModal() != IDOK) return; strcpy(m_cBinaryFileName,fdlgLoadBinary.GetPathName()); if (!fLoadBinary.Open(m_cBinaryFileName,CFile::modeRead | CFile::typeBinary,&e)){ CString msg; msg = "Can`t open file!\n"; msg += e.m_cause ; AfxMessageBox(msg); return; } if (m_pcBuffer != NULL) { delete []m_pcBuffer; m_pcBuffer = NULL; } unsigned int uiFileLength =fLoadBinary.GetLength(); m_pcBuffer = new char[uiFileLength + 1]; memset(m_pcBuffer,0x00,uiFileLength + 1); UINT nReadBytes = fLoadBinary.Read(m_pcBuffer,uiFileLength); AfxMessageBox(m_pcBuffer); //这只显示BM? m_pcBuffer[uiFileLength]= '\0'; GetDlgItem(IDC_EDIT_INPUTDATA)->SetWindowText(m_pcBuffer); AfxMessageBox(m_pcBuffer); 处理的是字符串,当然如此!m_pcBuffer[uiFileLength]= '\0';《--加什么,把字符串忘掉。记住m_pcBuffer的地址和长度就够了,是二进制数据,不再是字符串了! 为什么DEBUG下的EXE一闪而过 发布一个个人开发的图像软件,希望大家支持 高手帮帮忙哩!求属性列表控件 最好是ActiveX控件 哪位高手做基于http的多线程下载和断点续传的程序呀, 新手提问socket,tcp的问题 求长方形图像的二维傅立叶变换,(不用快速算法) 急求,如何解决打印的问题 请教高手API串口写数据的问题 关于ADO在多线程中的问题? 怎样用程序操作IE中工具栏(不是菜单)里的打印按钮?(active) 作为回报,zhdleo来领分,50 作为回报,zhdleo来领分,800
CFileException e; CFileDialog fdlgLoadBinary(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"All Files(*.*)|*.*",NULL);
if (fdlgLoadBinary.DoModal() != IDOK) return;
strcpy(m_cBinaryFileName,fdlgLoadBinary.GetPathName()); if (!fLoadBinary.Open(m_cBinaryFileName,CFile::modeRead | CFile::typeBinary,&e)){
CString msg;
msg = "Can`t open file!\n";
msg += e.m_cause ;
AfxMessageBox(msg);
return;
}
if (m_pcBuffer != NULL) {
delete []m_pcBuffer;
m_pcBuffer = NULL;
}
unsigned int uiFileLength =fLoadBinary.GetLength();
m_pcBuffer = new char[uiFileLength + 1];
memset(m_pcBuffer,0x00,uiFileLength + 1);
UINT nReadBytes = fLoadBinary.Read(m_pcBuffer,uiFileLength);
AfxMessageBox(m_pcBuffer); //这只显示BM?
m_pcBuffer[uiFileLength]= '\0';
GetDlgItem(IDC_EDIT_INPUTDATA)->SetWindowText(m_pcBuffer);
m_pcBuffer[uiFileLength]= '\0';《--加什么,把字符串忘掉。
记住m_pcBuffer的地址和长度就够了,是二进制数据,不再是字符串了!