How to create a hex dump of data from memory in C

2 Answers

0 votes
#include <stdio.h>
#include <ctype.h>

void hexdump(void *ptr, int len) {
    unsigned char *buf = (unsigned char*)ptr;
    int i;
    
    for (i = 0; i < len; i += 16) {
        printf("%06x: ", i);
        for (int j = 0; j < 16; j++) {
            if (i + j < len) {
                printf("%02x ", buf[i + j]);
            }
            else {
                printf("   ");
            }
            printf(" ");
        }

        for (int j = 0; j < 16; j++) {
            if (i + j < len) {
                printf("%c", isprint(buf[i + j]) ? buf[i + j] : '.');
            }
        }
        printf("\n");
    }
}


int main() {
    char arr[] = "abcdefghijklmnopqrstuvwxyzaaaaaaaaaaaaaaaaa";
    
    hexdump(arr, 43);
}

  
  
/*
run:
     
000000: 61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  abcdefghijklmnop
000010: 71  72  73  74  75  76  77  78  79  7a  61  61  61  61  61  61  qrstuvwxyzaaaaaa
000020: 61  61  61  61  61  61  61  61  61  61  61                      aaaaaaaaaaa
              
*/

 



answered Dec 4, 2024 by avibootz
edited Dec 4, 2024 by avibootz
0 votes
#include <stdio.h>
#include <ctype.h>

void hexdump(void *ptr, int len) {
    unsigned char *buf = (unsigned char*)ptr;
    int i;
    
    for (i = 0; i < len; i += 16) {
        printf("%06x: ", i);
        for (int j = 0; j < 16; j++) {
            if (i + j < len) {
                printf("%02x ", buf[i + j]);
            }
            else {
                printf("   ");
            }
            printf(" ");
        }

        for (int j = 0; j < 16; j++) {
            if (i + j < len) {
                printf("%c", isprint(buf[i + j]) ? buf[i + j] : '.');
            }
        }
        printf("\n");
    }
}


int main() {
    int arr[] = {1, 2, 3, 4, 5, 1000}; 
    
    hexdump(arr, 24);
}

  
  
/*
run:
     
000000: 01  00  00  00  02  00  00  00  03  00  00  00  04  00  00  00  ................
000010: 05  00  00  00  e8  03  00  00                                  ........
              
*/

 



answered Dec 4, 2024 by avibootz

Related questions

2 answers 83 views
2 answers 191 views
191 views asked Dec 29, 2021 by avibootz
1 answer 137 views
137 views asked Aug 2, 2015 by avibootz
1 answer 132 views
1 answer 123 views
1 answer 63 views
...