linux c中的hexdump实现,用于打印内存

来源:互联网 发布:java难学吗 编辑:程序博客网 时间:2024/05/16 08:25
  1. #include <stdio.h>  
  2. #include <assert.h>  
  3. #include <stdlib.h>  
  4. #include <inttypes.h>  
  5.   
  6.   
  7. //http://androidxref.com/7.1.1_r6/xref/external/avahi/avahi-compat-howl/text-test.c#33  
  8. static void hexdump(const void* p, size_t size) {  
  9.     const uint8_t *c = p;  
  10.     assert(p);  
  11.   
  12.     printf("Dumping %u bytes from %p:\n", size, p);  
  13.   
  14.     while (size > 0) {  
  15.         unsigned i;  
  16.   
  17.         for (i = 0; i < 16; i++) {  
  18.             if (i < size)  
  19.                 printf("%02x ", c[i]);  
  20.             else  
  21.                 printf("   ");  
  22.         }  
  23.   
  24.         for (i = 0; i < 16; i++) {  
  25.             if (i < size)  
  26.                 printf("%c", c[i] >= 32 && c[i] < 127 ? c[i] : '.');  
  27.             else  
  28.                 printf(" ");  
  29.         }  
  30.   
  31.         printf("\n");  
  32.   
  33.         c += 16;  
  34.   
  35.         if (size <= 16)  
  36.             break;  
  37.   
  38.         size -= 16;  
  39.     }  
  40. }  
原创粉丝点击