将二进制文件以十六进制模式显示的小示例代码

整篇没用的发上来,一个简单的从二进制文件中读取内容,并以16进制格式保存的小示例程序,没多少实际意义。闲话不多说,直接贴代码:        

include "stdafx.h"
#define     byte    unsigned char

int _tmain(int argc, _TCHAR* argv[])
{
    
if( NULL == argv[1] )
    {
        printf(
"Parameter needed!\n");
        
return 1;
    }

    FILE    
*f_Exefile = NULL;
    FILE    
*f_Report  = NULL;

    f_Exefile 
= _wfopen( argv[1],L"rb");
    
if( NULL == f_Exefile )
    {
        printf(
"Open executable file failed!\n");
        
return 1;
    }

    f_Report 
= _wfopen( L"D:\\Report.txt",L"wt");
    
if( NULL == f_Report )
    {
        printf(
"Create report file failed!\n");
        
return 1;
    }

    fseek(f_Exefile,
0,SEEK_END);
    
long filesize = ftell(f_Exefile);
    fseek(f_Exefile,
0,SEEK_SET);    

    
byte buffer[1024];    
    
char* buffer2 = new char[2];
    
string tmp;
    
long readed = 0;
    
int  actual = 0;     
    
    
while( readed < filesize )
    {
        memset( buffer,
'\0',1024);
        actual 
= fread( buffer,sizeof(byte),1023,f_Exefile);        
        readed 
+= actual;
                
        tmp 
= "";
        
forint i= 0; i<actual; i++ )
        {                
            memset(buffer2,
'\0',2);
            sprintf( buffer2,
"%02x",buffer[i]);
            buffer2[
0= toupper(buffer2[0]);
            buffer2[
1= toupper(buffer2[1]);
            tmp.append(buffer2);            
        }
        fwrite( tmp.c_str(),
sizeof(char),tmp.length(),f_Report);
    }

    
if( f_Exefile )
    {
        fclose( f_Exefile );
        f_Exefile 
= NULL;
    }

    
if( f_Report )
    {
        fclose( f_Report );
        f_Report 
= NULL;
    }

    
return 0;
}

 

        欢迎转载,转载请注明出处:http://www.cnblogs.com/royenhome

posted @ 2010-11-29 13:08  royen  阅读(694)  评论(0)    收藏  举报