如何将地址舍入到16的倍数

Dav*_*ibe 2 c

给定一个unsigned char *x,我需要将*x指向下的地址舍入到16的倍数.如下0x7fff5fbff7fc0x7fff5fbff7f0.我试图改变它:

x >> 4;
x << 4;
Run Code Online (Sandbox Code Playgroud)

也试过了

x >>= 4;
x <<= 4;
Run Code Online (Sandbox Code Playgroud)

但考虑到它不是整数,它不允许我这样做.有什么建议?

小智 7

(unsigned char *)((uintptr_t)(x) & ~(uintptr_t)(15))
Run Code Online (Sandbox Code Playgroud)

如果你想要便携...