65,176
社区成员




unsigned int c;
FILE *jpgpicture01;
CString strbyte,str001[1024];
char strLogFile[512];
iRecvLen = recv(pt->sock.sock_handle, pt->sock.msg, _YDLOGMAXBUF,0); //接收socket数据
jpgpicture01=fopen(strLogFile,"ab+"); // strLogFile文件名,“ab+” 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
// 因为我接收的数据是“客户端socket分段发送”过来的,要多次打开和关闭文件,所以每次打开文件之后要从文件尾开始写数据
for(int i=0;i<iRecvLen;i++)
{
strbyte.Format("%02X",pt->sock.msg[i]); //将接收到的数据强制转换成十六进制
str001[i]=strbyte.Right(2); //我发现发过来的数据pt->sock.msg[i],只有最右边的两位有效,比如socket发送的是0xDB
// 比如客户端socket发送的是0xDB,我这边收到的是FFFFFFDB,所以我进行了提取
c=atoi(str001[i]); //将提取的十六进制数据转换成无符号整型,按照zhao4zhong1老师写的程序
fputc(c,jpgpicture01);
}
fclose(jpgpicture01);
unsigned int c;
FILE *jpgpicture01;
CString strbyte,str001[1024];
char strLogFile[512];
iRecvLen = recv(pt->sock.sock_handle, pt->sock.msg, _YDLOGMAXBUF,0); //接收socket数据
jpgpicture01=fopen(strLogFile,"ab+"); // strLogFile文件名,“ab+” 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
// 因为我接收的数据是“客户端socket分段发送”过来的,要多次打开和关闭文件,所以每次打开文件之后要从文件尾开始写数据
for(int i=0;i<iRecvLen;i++)
{
strbyte.Format("%02X",pt->sock.msg[i]); //将接收到的数据强制转换成十六进制
str001[i]=strbyte.Right(2); //我发现发过来的数据pt->sock.msg[i],只有最右边的两位有效,比如socket发送的是0xDB
// 比如客户端socket发送的是0xDB,我这边收到的是FFFFFFDB,所以我进行了提取
c=atoi(str001[i]); //将提取的十六进制数据转换成无符号整型,按照zhao4zhong1老师写的程序
fputc(c,jpgpicture01);
}
fclose(jpgpicture01);
#include <stdio.h>
#include <string.h>
#include <conio.h>
FILE *fi,*fo;
int r;
unsigned int n,c;
long offset;
//-------------------------------------------------------
void main(int argc,char *argv[])
{
if (argc<3) {
cprintf("Hex2Bin srcfile desfile");
return;
}
if ((fi=fopen(argv[1],"rb"))==NULL) {
cprintf("Can not find file %s",argv[1]);
return;
}
if ((fo=fopen(argv[2],"wb"))==NULL) {
fclose(fi);
cprintf("Can not create file %s",argv[2]);
return;
}
n=0;
while (1) {
offset=ftell(fi);
r=fscanf(fi,"%2x",&c);
if (EOF==r) break;//
if (1==r) {
fputc(c,fo);
n++;
} else {//0==r
fseek(fi,offset,SEEK_SET);//因为VC6的Release版及其VC7,8,9,10,...版的fscanf未按约定保持offset不变,所以此处必须恢复offset
r=fgetc(fi);
if (EOF==r) break;//
}
}
fcloseall();
cprintf("OK to Hex2Bin %d bytes.",n);
}