C++读写二进制文件

 
代码
#include "stdafx.h"
#include 
"stdio.h"
#include 
"string.h"
#include 
"stdlib.h"
#define  MAXLEN 1024
void Fill0(char t[])
{
    
    
if(strlen(t)<2)
    {
        t[
1]=t[0];
        t[
0]='0';
        t[
2]=0;
    }
}
int   binaryToString(char *from,char *to)   
  {   
          FILE 
*fp;
      FILE 
*out;
     
      fp
=fopen(from,"rb");
      
out=fopen(to,"w");
      
if(!fp||!out){
            printf(
"error!\n");
            
return -1;
      }
      unsigned 
char c;
      
int count;

    
char cc[2];
    
int size=0;
      
while((count=fread(&c, 11, fp)) == 1)
      {
        
        
        sprintf(cc,
"%x",c); 
        Fill0(cc);
    
        
        fwrite(cc,
1,2,out);

            size
++;
        
      }
      printf(
"total:%d",size);
          fclose(
out);
          fclose(fp);
          
return   0;   
  }   
int stringToBinary(char *from,char *to)
{
        FILE 
*fp;
      FILE 
*out;

      fp
=fopen(from,"r");
      
out=fopen(to,"wb");
      
if(!fp||!out){
            printf(
"error!\n");
            
return -1;
      }
      
      
int count;

    
char cc[2];
    
int size=0;
    
int d=0;
      
while((count=fread(cc, 12, fp)) == 2)
      {
    
            sscanf(cc,
"%2x",&d); 

    
        fwrite(
&d,1,1,out);
    
            size
++;
        
      }
      printf(
"total:%d",size);
          fclose(
out);
          fclose(fp);
          
return   0;   
}


int main(int argc,char* argv[])
{
    
    
if(argc!=4)
    {
        printf(
"cmd -tos|tob <srcFile> <destFile>\n");
        getchar();
        
return -1;
    }
    
if(strcmp(argv[1],"tos")==0)
    {
        binaryToString(argv[
2],argv[3]);
    }
    
else if(strcmp(argv[1],"tob")==0)
    {
        stringToBinary(argv[
2],argv[3]);
    }
    
return 1;
}
原文地址:https://www.cnblogs.com/yangyh/p/1740371.html