2013-06-02 25 views
9

In C: Dato un indirizzo (in esa) ed e int n, come posso stampare i primi n byte a partire da indirizzo? Ho eseguito una ricerca rapida su google, ma non ho trovato nessuna informazione pertinente e non sono sicuro che ci sia qualche funzione speciale che fa questo o dovrei usare le chiamate di sistema?byte di stampa dalla memoria in C

Grazie!

+1

'const unsigned char * p = 0xdeadbeef; for (int i = 0; i

risposta

7
int n=<num_of_bytes>, i =0; 
unsigned char* byte_array = address; 

while (i < n) 
{ 
    print("%02X",(unsigned)byte_array[i]); 
    i++; 
} 

o qui è una risposta duplicato veramente bello da altre persone su StackOverflow: How to visualize bytes with C/C++

+0

hexeditplus.c: 114: 3: errore: nome di tipo sconosciuto 'byte' – TheEmeritus

+0

char e byte - http://stackoverflow.com/questions/13819820/char-vs-byte-for-byte-arrays ha appena fatto un piccola modifica per te ... non è stata compilata e sei sconvolta .. –

+0

@DoryZidon Sì, lo fanno, e si aspettano che scriviamo un editor esadecimale per loro ([/ deduction_guessed_from_filename]) –

4

Se sai di avere accesso "legale" a quell'indirizzo e le n-1 byte dopo che poi puoi farlo

int i; 
char *address=0x412AFB213; //your address 

for(i=0;i<n;i++) 
    printf("%d\n",*address++); 

Ma di solito (quasi sempre) non avrai questo accesso "legale".