繁体   English   中英

从内存地址获取字节?

[英]Get Byte from memory address?

我还在学习c ++并且花了好几个小时试图找到一种方法来获取存储在某个存储器地址的字节,在我的情况下,所有(好吧,几乎所有)存储器地址都不是动态的 - 所以地址指向,对于示例变量不会改变。

所以我试图检索存储在已知内存地址的单个字节。 例如,假设: 0x20000

我试图检索的字节是,例如,让我们说0xEF

现在,如何在不使用解除引用运算符的情况下检索字节? 所以基本上我需要得到0xEF而不必声明它是什么类型的数据类型,就像字面上只是物理上得到字节0xEF 希望这是有道理的,我是一个菜鸟:/

现在,如何在不使用解除引用运算符的情况下检索字节?

如果不取消引用访问的地址,则无法执行此操作。 您可以解决的最小数据类型是char 对于字节,通常使用typedef unsigned char uint8_t

因此,您必须使用reinterpret_cast<uint8_t*>(addr)访问内存地址,并取消引用以获取值。

取消引用内存地址是获取字节值的唯一方法。

将内存地址类型化为类型指针,然后解除引用它是最直接的方式,例如:

unsigned char value = *(reinterpret_cast<unsigned char*>(0x20000));

但是,要回答你的问题:

如何在不使用解除引用运算符的情况下检索字节?

您可以使用memcpy()或类似函数间接取消引用内存,例如:

#include <cstring>

unsigned char value;
std::memcpy(&value, (void*)0x20000, 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM