怎样在屏幕上以十六进制样式显示内存中的一段数据
来源:互联网 发布:三国乱世吕布觉醒数据 编辑:程序博客网 时间:2024/05/24 22:42
怎样在屏幕上以十六进制样式显示内存中的一段数据。
下面分以下几步来介绍:
1、字节转换成十六进制字符
2、数据块转换成十六进制字符串
3、将十六进制字符串格式化输出
4、将前面三步综合,将一段数据以十六进制显示。
1、字节转换成十六进制字符
定义十六进制字符的常量字符串,然后用字节的高四位和低四位分别作下标来直接访问常量表即得到十六进制的字符。(该功能用C语言库中的 ltoa 函数能很方便的实现)
void dtoh(UINT8 * hex,UINT8 n)
{
static const UINT8 HEX[] = "0123456789ABCDEF";
hex[0] = HEX[n / 16];
hex[1] = HEX[n % 16];
}
2、数据块转换成十六进制字符串
将一块数据转化成16进制,存放到out 所指的缓冲区,len为要转换的字节个数
void dump_block(char * in,char * out,int len)
{
int cur;
for (cur = 0; cur < len; cur++)
{
dtoh(out + 2 * cur,in[cur]);
}
}
3、将十六进制字符串格式化输出
本函数关键是用好printf的格式化输出功能。
①printf("%08xh:",row_cnt++); 中的"%08x",表示输出十六进制整数,宽度为8个字符,左填充0。
②printf("0x%-3.2s",in + size * cur);中 "%-3.2s"表示输出字符串,宽度为3,精度为2(精度表示最多输出两个字符,多的舍去)左对齐,右填充空格。
该函数每次显示size个字符,共显示 len次,字符串起始地址 in
void hex_disp(char * in,int len,int size)
{
int cur = 0;
int row_cnt = 0;
printf("%08dh:",row_cnt++);
do {
printf("0x%-3.2s",in + size * cur);
cur++;
if (cur % 8 == 0)
{
printf("/n%08dh:",row_cnt++);
}
} while(cur < len);
}
显示效果如下:
4、将前面三步综合,将一段数据以十六进制显示。
下面的函数将对指定地址和长度的数据段以十六进制显示其内容。
void dump (char * in,int len)
{
unsigned char * out = (unsigned char *)malloc(len * 2 + 1);
dump_block(in,out,len);
hex_disp(out,len,2);
free(out);
}
5、改进
- 怎样在屏幕上以十六进制样式显示内存中的一段数据
- 怎样在屏幕上以十六进制样式显示内存中的一段数据
- 怎样将一段内存中的HTML在CHtmlView中显示出来?
- 7.14 将例7.13以二进制形式存放在磁盘文件中的数据读入内存,并在显示器上显示。
- Android 数据显示在屏幕上
- 汇编语言: 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来
- asp中以十六进制显示字串数据
- 在接收框中以十六进制显示
- 读取内存中的一段数据
- java获取一段文字的url地址并以链接的形式显示在网页上
- 从键盘读入数据并显示在屏幕上
- 数据库中的图片数据怎样在Image中显示
- 怎样在ASP.NET中显示数据库中的数据
- 在屏幕上显示时间
- 怎样能在大小不同的屏幕上显示同样的网页(自适应网页设计)?
- 怎样在jsp页面上以表格的形式显示数据库里的内容
- 编制一个程序把BX寄存器内的二进制数用十六进制的形式在屏幕上显示出来
- 为什么有的vi不能以十六进制显示数据
- Load Balancing Servers, Firewalls, and Caches
- JPEG2000 Standard for Image Compression: Concepts, Algorithms and VLSI Architectures
- Windows下搭建自己的Blog
- 分享:我们的八卦精神!
- IT Security: Risking the Corporation
- 怎样在屏幕上以十六进制样式显示内存中的一段数据
- 如何用java连接sql的数据库
- 易变mutable
- 用EJB 和 Structs处理Web 应用程序中的异常
- 策划的三种境界(来自水木清华站)
- DBA2.0的时代 - DBA将向何处去?
- 解决验证问题
- String s = new String("abc");创建了几个String对象?
- C#操作Word完全方法