如何在c中打印内存位

Ale*_*leD 4 c memory bits

我正在学习如何在内存中表示数字.我想知道如何在一些int和float变量的内存中打印实际表示(二进制或十六进制).

我想看看在添加或减去数字时会发生什么情况会导致溢出,例如.

如何访问内存并打印?

dbu*_*ush 7

您需要将指向该变量的指针分配给a char *,并将其视为长度为字节的数组sizeof(variable).然后,您可以使用%Xprintf 的格式说明符以十六进制打印每个字节.

您可以定义这样的函数:

void print_bytes(void *ptr, int size) 
{
    unsigned char *p = ptr;
    int i;
    for (i=0; i<size; i++) {
        printf("%02hhX ", p[i]);
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

int x = 123456;
double y = 3.14;
print_bytes(&x, sizeof(x));
print_bytes(&y, sizeof(y));
Run Code Online (Sandbox Code Playgroud)