c - 按位操作地址

标签 c

我有一个十六进制地址,比如 007b183c。我想改变它的位。 我读过一些关于位移和掩码的内容(没有双关语),但我不知道如何获取位格式的地址。我该怎么做?

最佳答案

假设您正在谈论操作地址位,如果您有这样的地址:

char * p = (char *)0x007b183c;

并且您想要进行某种位操作,例如向上舍入到下一个 16 字节对齐地址,然后转换为合适的 int 类型,进行操作,然后转换回来,例如

char *p_aligned - (char *)(((uint_ptr_t)p + 15) & ~15); // p_aligned = 0x007b1840

关于c - 按位操作地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779060/

相关文章:

c - 关于 C 中圆括号的使用

带管道的 c 程序执行 "ps aux | grep firefox | tee processes.txt"

c++ - 如何将文件存储在可执行文件中

C编程: Strings

c - 特定计算机的软件堆栈

c - 当涉及多个算子时,执行顺序如何确定?

c - 为什么要将函数定义放在 .h 文件中?

c - 如何在结构中重新分配 double 组

c - 我的代码块无法编译

c++ - 在 C++ 中使用 cflags枚举