2

给定一个unsigned char *x,我需要将*x指向 的地址向下舍入为 16 的倍数。例如0x7fff5fbff7fc向下舍入到0x7fff5fbff7f0。我尝试使用以下方法对其进行转换:

x >> 4;
x << 4;

也试过

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

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

4

2 回答 2

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

如果你想便携...

于 2013-10-20T18:26:58.630 回答
0

x & 0xfffffff0至少尝试32 位整数。

于 2013-10-20T18:25:42.567 回答