www.pudn.com > HuffmanForFile.zip > UNCODE.C


#include  
#include  
 
int array[128]={6,33,34,35,36,37,38,39,5,41,42,43,44,45,46,47, 
		48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,7,65,66,67, 
		68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, 
		88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105, 
		106,107,108,109,110,111,112,113,114,115,116,117,118,119,120, 
		121,122,123,124,125,126,127,3,129,130,131,132,133,134,4, 
		136,137,138,139,140,141,142,143,144,145,146,147,148,149,150, 
		151,152,153,154,155,156,157,158,159}; 
 
main( int argc,char * argv[] ) 
{ 
  FILE * input_file; 
  FILE * output_file; 
  unsigned char rackin; 
  unsigned char rackout; 
  int mask; 
  int i,j; 
  unsigned char out_char; 
  unsigned char bit[8]; 
  char conclude; 
 
  if( ( input_file=fopen(argv[1],"r"))==NULL ) 
      printf( "cant open the input_file " ); 
  output_file=fopen( argv[2],"w" ); 
 
for( ; ; ) { 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  rackout=( rackin<<1 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[0]=rackin & 0x40 ; 
  bit[0] >>= 6; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;    
  putc( rackout,output_file ); 
 
 
  rackout=( rackin<<2 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[1]=rackin & 0x40 ; 
  bit[1] >>= 5; 
  bit[0]=rackin & 0x20 ; 
  bit[0] >>=5 ; 
  rackout |= bit[1]; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;        
  putc( rackout,output_file ); 
 
  rackout=( rackin<<3 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[2]=rackin & 0x40 ; 
  bit[2] >>= 4; 
  bit[1]=rackin & 0x20 ; 
  bit[1] >>=4 ; 
  bit[0]=rackin & 0x10 ; 
  bit[0] >>=4 ; 
  rackout |= bit[2]; 
  rackout |= bit[1]; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;    
  putc( rackout,output_file ); 
 
  rackout=( rackin<<4 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[3]=rackin & 0x40 ; 
  bit[3] >>= 3; 
  bit[2]=rackin & 0x20 ; 
  bit[2] >>= 3 ; 
  bit[1]=rackin & 0x10 ; 
  bit[1] >>= 3 ; 
  bit[0]=rackin & 0x08 ; 
  bit[0] >>= 3 ; 
  rackout |= bit[3]; 
  rackout |= bit[2]; 
  rackout |= bit[1]; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;      
  putc( rackout,output_file ); 
 
  rackout=( rackin<<5 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[4]=rackin & 0x40 ; 
  bit[4] >>= 2; 
  bit[3]=rackin & 0x20 ; 
  bit[3] >>= 2 ; 
  bit[2]=rackin & 0x10 ; 
  bit[2] >>= 2 ; 
  bit[1]=rackin & 0x08 ; 
  bit[1] >>= 2 ; 
  bit[0]=rackin & 0x04 ; 
  bit[0] >>= 2 ; 
  rackout |= bit[4]; 
  rackout |= bit[3]; 
  rackout |= bit[2]; 
  rackout |= bit[1]; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;    
  putc( rackout,output_file ); 
 
  rackout=( rackin<<6 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  bit[5]=rackin & 0x40 ; 
  bit[5] >>= 1; 
  bit[4]=rackin & 0x20 ; 
  bit[4] >>= 1; 
  bit[3]=rackin & 0x10 ; 
  bit[3] >>= 1; 
  bit[2]=rackin & 0x08 ; 
  bit[2] >>= 1; 
  bit[1]=rackin & 0x04 ; 
  bit[1] >>= 1; 
  bit[0]=rackin & 0x02 ; 
  bit[0] >>= 1; 
  rackout |= bit[5]; 
  rackout |= bit[4]; 
  rackout |= bit[3]; 
  rackout |= bit[2]; 
  rackout |= bit[1]; 
  rackout |= bit[0]; 
     if( (rackout==128) || (rackout==8) ) rackout=32;     
  putc( rackout,output_file ); 
 
  rackout=( rackin<<7 ); 
  rackin=getc( input_file ); 
  conclude=rackin; 
  if( conclude==EOF ) break; 
  for( i=0;i<=127;i++ ) if( array[i]==rackin ) break; 
  rackin=i; 
  rackout |= rackin; 
  if( (rackout==128) || (rackout==8) ) rackout=32;    
  putc( rackout,output_file ); 
  } 
  putc(0x0d,output_file ); 
  putc(0x0a,output_file ); 
  fclose( output_file ); 
  fclose( input_file ); 
 
}