⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hexdump.c

📁 VxWorks操作系统下的SNMP协议以及MIB协议的实现源码,并且实现了HP标准打印类的MIB框架.
💻 C
字号:
#include "VxWorks.h"
#include "stdioLib.h"
#include "strLib.h"


void hexDump(char *data,int size)
{
	int count,line;
	char number,n,colume;
	char buf[100];
	n = number = colume = 0;
	count = line = 0;
	printf("\n\n*****<czz>*****dump %d data(s)*****<czz>*****",size);
	while(count < size)
	{	
		memset(buf,0,100);
		if(line == 0)
			sprintf(buf,"\n0x00000000: ");
		else if(line >= 0x01 && line <= 0x0f)
			sprintf(buf,"\n0x000000%x0: ",line);
		else if(line >= 0x10 && line <= 0xff)
			sprintf(buf,"\n0x00000%x0: ",line);
		else if(line >= 0x100 && line <= 0xfff)
			sprintf(buf,"\n0x0000%x0: ",line);
		else if(line >= 0x1000 && line <= 0xffff)
			sprintf(buf,"\n0x000%x0: ",line);
		else if(line >= 0x10000 && line <= 0xfffff)
			sprintf(buf,"\n0x00%x0: ",line);
		else if(line >= 0x100000 && line <= 0xffffff)
			sprintf(buf,"\n0x0%x0: ",line);
		else if(line >= 0x1000000)
			sprintf(buf,"\n0x%x0: ",line);

		for(colume = 0; colume < 16; colume++)
		{
			for(n=0;n<2;n++)
			{
				if(n == 0)
					number = (data[count]>>4);
				else
					number = (data[count]&0xf);
				if(count < size)
				{
					switch(number)
					{
						case 0x0:
							sprintf(buf+13 + colume*3 + n,"0");
							break;
						case 0x1:
							sprintf(buf+13 + colume*3 + n,"1");
							break;
						case 0x2:
							sprintf(buf+13 + colume*3 + n,"2");
							break;
						case 0x3:
							sprintf(buf+13 + colume*3 + n,"3");
							break;
						case 0x4:
							sprintf(buf+13 + colume*3 + n,"4");
							break;
						case 0x5:
							sprintf(buf+13 + colume*3 + n,"5");
							break;
						case 0x6:
							sprintf(buf+13 + colume*3 + n,"6");
							break;
						case 0x7:
							sprintf(buf+13 + colume*3 + n,"7");
							break;
						case 0x8:
							sprintf(buf+13 + colume*3 + n,"8");
							break;
						case 0x9:
							sprintf(buf+13 + colume*3 + n,"9");
							break;
						case 0xa:
							sprintf(buf+13 + colume*3 + n,"A");
							break;
						case 0xb:
							sprintf(buf+13 + colume*3 + n,"B");
							break;
						case 0xc:
							sprintf(buf+13 + colume*3 + n,"C");
							break;
						case 0xd:
							sprintf(buf+13 + colume*3 + n,"D");
							break;
						case 0xe:
							sprintf(buf+13 + colume*3 + n,"E");
							break;
						case 0xf:
							sprintf(buf+13 + colume*3 + n,"F");
							break;					
					}//end switch(number)
				}//end if count <=size
				else
				{
					sprintf(buf+13 + colume*3 + n," ");
				}
			}//end for(n<2) loop
			if(count < size)
			{
				if(data[count]>0x20 && data[count]<0x7f)
					sprintf(buf+ 14 + 16*3 + colume,"%c",data[count]);
				else
					sprintf(buf+ 14 + 16*3 + colume,".");
			}
			else
			{
				sprintf(buf+ 14 + 16*3 + colume," ");
			}
			count++;
			if(colume == 3||colume == 7||colume == 11||colume == 15)
				sprintf(buf+13 + colume*3 +2,"|");
			else	
				sprintf(buf+13 + colume*3 +2," ");
		}//end for(colume <16) loop
		buf[13+15*3 + 2 + 1] = 0x7c;	//last sprintf will set this bit to \0
		printf("%s",buf);
		line++;
	}//end while(count < size) loop
	printf("\n*****<czz>*****end dump*****<czz>*****\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -