您的位置:首页 > 编程语言 > C语言/C++

打印内存的c语言实现

2016-05-25 16:30 316 查看
有很多时候,特别是linux服务端开发程序是,需要看内存块的信息,网上搜到的一个现成的代码,用了不错,记一下!
void HexDump(char *buf,int len,int addr) {int i,j,k;char binstr[80];for (i=0;i<len;i++) {if (0==(i%16)) {sprintf(binstr,"%08x -",i+addr);sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);} else if (15==(i%16)) {sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);sprintf(binstr,"%s  ",binstr);for (j=i-15;j<=i;j++) {sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');}printf("%s\n",binstr);} else {sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);}}if (0!=(i%16)) {k=16-(i%16);for (j=0;j<k;j++) {sprintf(binstr,"%s   ",binstr);}sprintf(binstr,"%s  ",binstr);k=16-k;for (j=i-k;j<i;j++) {sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');}printf("%s\n",binstr);}}int main(void){char buf[40] = "125a3ADC566742->->45!23afasdb2345~+asd";HexDump(buf, strlen(buf), (int)buf);return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 内存 打印