爱上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     else
17     {
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             else
39             {
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             else
51             {
52             printf(" ");
53             }
54     }
55     printf("|");
56     printf("\n");
57   }
58   fclose(Pf);
59   Pf=NULL;
60 }

注:本例实现了“hexdump -C”的功能

时间: 2024-10-10 13:45:22

爱上C之:自制hexdump「二进制字节码查看」的相关文章

这一次,彻底弄懂「Java字节码文件」

提前祝福各位读者??圣诞快乐!这个圣诞节请在学习中度过! 不啰嗦,直接从最最简单的一段Java源代码开启Java整体字节码分析之旅. 1.Java 源码文件 package com.dskj.jvm.bytecode; public class MyTest1 { private int a = 1; public int getA() { return a; } public void setA(int a) { this.a = a; } } 2.Java字节码文件 IDEA工具编译代码后,

Atitit.java&#160;虚拟机的构成&#160;与指令分类&#160;与&#160;指令集合&#160;以及字节码查看工具javjap

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程1 1.3. 约有250个指令2 2. JVM指令助记符 分类2 2.1. 变量到操作数栈:2 2.2. 算数指令3 2.3. 移位指令3 2.4. 逻辑指令4 2.5. 流程跳转指令4 2.6. Oo指令4 2.7. 运算指令 5 3. 查看指令反编译工具6 3.1.   分析java语言特性的一

Dubbo源码分析(八):Javassist字节码技术生成代理

Java动态编程的作用:      通过配置生成代码,减少重复编码和维护成本 我们常用到的动态特性主要是反射,在运行时查找对象属性.方法,修改作用域,通过方法名称调用方法等.在线的应用不会频繁使用反射,因为反射的性能开销较大.其实还有一种和反射一样强大的特性,但是开销却很低,它就是Javassit. Javassit其实就是一个二方包,提供了运行时操作Java字节码的方法.大家都知道,Java代码编译完会生成.class文件,就是一堆字节码.JVM(准确说是JIT)会解释执行这些字节码(转换为机

Java字节码操作开源框架简介

avassist  Javassist是一个开源的分析.编辑和创建Java字节码的类库.是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的.它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架. BCEL  Byte Code Engineering Library (BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分.BCEL是 Java classwor

字节码技术及动态代理

.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !important; white-space: pre !important; overflow: auto !important } .task-list-list { list-style-type: none } .task-list-list.checked { color: rgb(62,

深入理解JVM虚拟机5:虚拟机字节码执行引擎

虚拟机字节码执行引擎 微信公众号[Java技术江湖]一位阿里 Java 工程师的技术小站.作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux.网络.多线程,偶尔讲点Docker.ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!(关注公众号后回复”Java“即可领取 Java基础.进阶.项目和架构师等免费学习资料,更有数据库.分布式.微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南

将图片的二进制字节 在HTML页面中显示

两种方法: 后端的一般处理程序:Imge.ashx 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI.WebControls; 6 7 namespace Test 8 { 9 /// <summary> 10 /// Imge 的摘要说明 11 /// </summary> 12 public clas

.net 根据图片网络地址获取图片二进制字节数据流

/// <summary> ///根据html路径获取图片的字节 /// </summary> /// <param name="picSize">图片尺寸,原图:1,大图:2,中图:3,小图:4</param> /// <param name="serverPath">图片服务器地址</param> /// <returns></returns> public stat

将图片的二进制字节字符串在HTML页面以图片形式输出

具体实现代码如下: 1.新建一个一般处理程序: Image.ashx 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Net; 6 using System.Drawing.Imaging; 7 using System.IO; 8 9 namespace Test 10 { 11 /// <summary> 12 ///测试图