地址四舍五入为16的倍数

地址四舍五入为16的倍数

给定一个unsigned char *x,我需要将*x指向的地址四舍五入为16的倍数,例如0x7fff5fbff7fc向下为0x7fff5fbff7f0。我试图使用以下方法来转移它:

x >> 4;
x << 4;


也试过了

x >>= 4;
x <<= 4;


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

最佳答案

(unsigned char *)((uintptr_t)(x) & ~(uintptr_t)(15))


如果你想便携...

关于c - 如何将地址四舍五入为16的倍数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19481097/

10-09 02:29