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

  1. #include <stdio.h>
  2. #include <assert.h>
  3. #include <stdlib.h>
  4. #include <inttypes.h>
  5. //http://androidxref.com/7.1.1_r6/xref/external/avahi/avahi-compat-howl/text-test.c#33
  6. static void hexdump(const void* p, size_t size) {
  7. const uint8_t *c = p;
  8. assert(p);
  9. printf("Dumping %u bytes from %p: ", size, p);
  10. while (size > 0) {
  11. unsigned i;
  12. for (i = 0; i < 16; i++) {
  13. if (i < size)
  14. printf("%02x ", c[i]);
  15. else
  16. printf(" ");
  17. }
  18. for (i = 0; i < 16; i++) {
  19. if (i < size)
  20. printf("%c", c[i] >= 32 && c[i] < 127 ? c[i] : .);
  21. else
  22. printf(" ");
  23. }
  24. printf(" ");
  25. c += 16;
  26. if (size <= 16)
  27. break;
  28. size -= 16;
  29. }
  30. }
经验分享 程序员 微信小程序 职场和发展