C में किसी वेरिएबल की मेमोरी रिप्रेजेंटेशन (बाइट-स्तरीय दृश्य) देखने के लिए, हम उसके एड्रेस को unsigned char* (बाइट पॉइंटर) में कास्ट करके प्रत्येक बाइट को प्रिंट कर सकते हैं।
चरण
- वेरिएबल का एड्रेस और आकार (
sizeof) प्राप्त करें। - एड्रेस को
unsigned char*(याbyte_pointer) में कास्ट करें। - लूप चलाकर आकार जितनी बाइट्स प्रिंट करें।
उदाहरण
#include <stdio.h>
typedef unsigned char *byte_pointer;
void disp_bytes(byte_pointer ptr, int len) {
for (int i = 0; i < len; i++)
printf(" %.2x", ptr[i]);
printf("\n");
}
void disp_int(int x) {
disp_bytes((byte_pointer) &x, sizeof(int));
}
void disp_float(float x) {
disp_bytes((byte_pointer) &x, sizeof(float));
}
void disp_pointer(void *x) {
disp_bytes((byte_pointer) &x, sizeof(void *));
}
int main() {
int i = 5;
float f = 2.0;
int *p = &i;
disp_int(i);
disp_float(f);
disp_pointer(p);
disp_int(i);
return 0;
}
आउटपुट
05 00 00 00 00 00 00 40 3c fe 22 00 00 00 00 00 05 00 00 00
व्याख्या
- इंटीजर (5): लिटिल-एंडियन में
05 00 00 00। - फ्लोट (2.0): IEEE 754 फॉर्मेट में
00 00 00 40। - पॉइंटर: सिस्टम आर्किटेक्चर (32/64-बिट) के अनुसार एड्रेस।
नोट: आउटपुट एंडियननेस और आर्किटेक्चर पर निर्भर करता है।