gpt4 book ai didi

将 32 位指针转换为 64 位整数

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:38 25 4
gpt4 key购买 nike

执行此操作的最佳方法是什么?

假设我有:

 void* p = 0xc8f68000;
unsigned long long v = (unsigned long long)p;

我得到的是 v = 0xffffffffc8f68000 而不是 0x00000000c8f68000。我必须使用 shift 吗?

最佳答案

无论何时处理指向整数的指针转换,最好使用 uintptr_t。这是在转换指针时避免大小和符号扩展问题的便携方式。

#include <stdint.h>

void *p = 0xc8f68000;
uint64_t v = (uintptr_t)p;

关于将 32 位指针转换为 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com