printf C中十六进制值的最后一个字节

lan*_*llx 2 c

我有一个简单的问题.代码非常简短,所以我只是在这里发布

#include <stdio.h>
int main(int argc, const char * argv[])
{

    long int p;

    printf("FYI: address of first local varaible of main() on the function stack:%p\n",&p);
    printf("Enter start address <hex notation> of dump:");
    scanf("%lx",&p);

    char * q;
    q = (char*)p;

    printf("%x\n",*q);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

最后一个printf的结果,例如ffffffc8.如果我只想保留最后两个怎么办:c8.我怎样才能做到这一点?我想: printf("%2x",*q);printf("%x",*q % 256); 但无论是作品.有人可以帮忙吗?谢谢!

NPE*_*NPE 7

要打印*q十六进制中最不重要的字节,您可以使用:

printf("%02x", *q & 0xFF);
Run Code Online (Sandbox Code Playgroud)

这当然假设q可以解除引用.