首页 > 代码库 > 爱上C之:自制hexdump「二进制字节码查看」
爱上C之:自制hexdump「二进制字节码查看」
1 #include <stdio.h> 2 #include <string.h> 3 #include <ctype.h> 4 #define N 16 5 int main(int argc,char *argv[]) 6 { 7 char filename[FILENAME_MAX];//C‘s max length of file name. 8 FILE *Pf=NULL; 9 unsigned char buffer[N]; //Use unsigned char,prevent hex overflow.10 int count,i,j;11 if(argc==1)12 {13 printf("Please tell me your file name(with path if not in the current dir):\n");14 scanf("%s",filename);15 }16 else17 {18 strcpy(filename,argv[1]);19 }20 Pf=fopen(filename,"rb");21 setvbuf(Pf,NULL,_IOFBF,1024);//Set max buffer size to 1024 bytes.22 if(Pf==0)23 {24 printf("Can‘t access %s!\n",filename);25 return 0;26 }27 while(feof(Pf)==0)//check the end of file.28 {29 count=fread(buffer,1,sizeof(buffer),Pf);30 printf("%08x ",j);//number in hex.31 j+=16;32 for(i=0;i<sizeof(buffer);i++)33 {34 if(i<count)35 {36 printf("%02x ",buffer[i]);37 }38 else39 {40 printf(" ");41 }42 }43 printf("| ");44 for(i=0;i<sizeof(buffer);i++)45 {46 if(i<count)47 {48 printf("%c",isprint(buffer[i])?buffer[i]:‘.‘);49 }50 else51 {52 printf(" ");53 }54 }55 printf("|");56 printf("\n");57 }58 fclose(Pf);59 Pf=NULL;60 }
注:本例实现了“hexdump -C”的功能
爱上C之:自制hexdump「二进制字节码查看」
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。