【发布时间】:2018-05-25 23:17:00
【问题描述】:
请考虑以下代码:
const char* cTitle = "MyTitle";
__int64 i = reinterpret_cast<__int64>(ctitle);
每次运行此代码时,我都会得到不同的 i 值。
现在我想写一个测试来检查我们是否发送到正确的标题,所以我使用以下代码来实现目标但无法使用reinterpret_cast获取标题:
char* cOrgValue = reinterpret_cast<char*> (i);
是否甚至可以获得原始标题值,如果可以,那么这是正确的方法吗?
编辑
所以让我重新表述一下这个问题:
使用 reinterpret_cast 将 char* 转换为 __int64 后,如何获取其原始值。
【问题讨论】:
-
cTitle是一个指针;您正在将内存地址转换为__int64。我猜你实际上想“转换”字符串的内容? -
每次运行时,包含字符串的数组的位置可能会放在不同的位置。您要解决的实际问题是什么? 为什么您将指针投射到(非标准)
__int64类型? (如果您想打印指针,只需将其转换为void*,或将其存储在std::intptr_t类型变量中)。 -
@M.M 是的,我想转换字符串的内容。
-
确实可以做到,而且你所做的已经接近“正确”的做法了。不过,这样做仍然不是一个好主意。而且我们仍然不知道您为什么要这样做。对于您实际上想要通过此解决方案解决的问题,可能会有更好的解决方案。我建议你花点时间read about the XY problem。
-
您的可观察问题是什么?一个好的公式是“我希望/期望这个程序打印 123,但它会打印 456”。
标签: c++ casting reinterpret-cast