2013-06-02 34 views
9

Trong C: Với một địa chỉ (trong hexa) và và int n, làm thế nào tôi có thể in n byte đầu tiên bắt đầu từ địa chỉ ? Tôi đã chạy một tìm kiếm google nhanh, nhưng không tìm thấy bất kỳ thông tin có liên quan, và tôi không chắc chắn nếu có một số chức năng đặc biệt mà thực hiện điều này hoặc tôi nên sử dụng các cuộc gọi hệ thống?In byte từ bộ nhớ trong C

Cảm ơn!

+1

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

Trả lời

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

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

hoặc đây là một câu trả lời trùng lặp thật sự tốt đẹp từ người khác trên stackoverflow: How to visualize bytes with C/C++

+0

hexeditplus.c: 114: 3: lỗi: tên không xác định 'byte' – TheEmeritus

+0

char và byte - http://stackoverflow.com/questions/13819820/char-vs-byte-for-byte-arrays vừa làm chỉnh sửa nhỏ cho bạn .. nó không biên dịch và bạn khó chịu .. –

+0

@DoryZidon Có, họ làm, và họ mong đợi chúng tôi viết một trình soạn thảo hex cho họ ([/ deduction_guessed_from_filename]) –

4

Nếu bạn biết rằng bạn có quyền truy cập "hợp pháp" đến địa chỉ đó và n-1 byte sau đó sau đó bạn có thể làm điều này

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

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

Nhưng thường (hầu như luôn luôn) bạn sẽ không có quyền truy cập "hợp pháp" này.

Các vấn đề liên quan