2013-06-02 17 views
9

w C: Biorąc pod uwagę adres (w hexa) a i int n, jak mogę wydrukować pierwsze n bajtów zaczynając od adres? Uruchomiłem szybkie wyszukiwanie google, ale nie znalazłem żadnych istotnych informacji i nie jestem pewien, czy jest jakaś specjalna funkcja, która to robi, czy też powinienem używać wywołań systemowych?Print bajtów z pamięci w C

Dzięki!

+1

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

Odpowiedz

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

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

lub tutaj jest naprawdę ładne duplikat odpowiedź od innych ludzi na stackoverflow: How to visualize bytes with C/C++

+0

hexeditplus.c: 114: 3: error: nieznany typ nazwa 'bajtu' – TheEmeritus

+0

char i byte - http://stackoverflow.com/questions/13819820/char-vs-byte-for-byte-arrays właśnie zrobił mała edycja dla ciebie ... tak się nie skompilowała i jesteś zdenerwowana .. –

+0

@DoryZidon Tak, robią, i oczekują od nas napisania edytora szesnastkowego dla nich ([/ deduction_guessed_from_filename]) –

4

Jeśli wiesz, że masz „prawną” dostępu do tego adresu i n-1 bajtów po tym następnie możesz to zrobić:

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

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

Ale zwykle (prawie zawsze) nie będziesz mieć tego "legalnego" dostępu.

Powiązane problemy