c - 将 char* 转换为 int 内存地址
问题描述
我有:
char* mem = (char*) 0xB8000;
然后mem
传递给一个函数。在函数内部,我想取回数字0xB8000
并将其与其他一些整数进行比较。如何转换mem
回原始整数?
解决方案
要将任何指针转换为整数,请执行以下操作:
#include <stdint.h>
uintptr_t ptr_to_integer(const void *ptr) {
return (uintptr_t) ptr;
}
请注意,uintptr_t
平台的大小可能会有所不同。这也是 C 标准的可选部分,因此从技术上讲uintmax_t
,它绝对是可移植的。
推荐阅读
- python - 在python中检查一个数字是否可被另一个数字整除的最快方法
- mysql - MySQL 优先级队列和打包插件
- python - Python Google App Engine - 参考在 VM 上上传的 .pkl 文件
- django - Django:我可以为同一操作执行两个预保存信号吗?
- azure - 如何在 Azure 监视器中为 VM 洞察指标添加警报?
- php - 在 Edi 记事本中打开 837 Edi 文件后发生无效的真实(数据类型)错误
- spring - Spring boot - 无法构建休眠 SessionFactory;嵌套异常是 java.lang.UnsupportedOperationException
- php - PHP上传图片,不同的查询
- javascript - Angular 2 应用程序无法在 IE、MAC Safari 中运行
- django - AWS InvalidParameterValueError - 名为 ... 的环境对此操作处于无效状态。必须等待部署