gpt4 book ai didi

c++ - 将无符号的int地址视为指针,并将其解引用为字节数组

转载 作者:行者123 更新时间:2023-12-02 10:08:54 24 4
gpt4 key购买 nike

所以,我有一个unsigned int变量,上面存储着一个十进制值地址,比如说unsigned int var = 1232342,我想做的是在不知道变量的类型的情况下,但是知道变量的大小和存储它的地址,以byte array的形式获取值。例如,假设我有一个int var = 20及其地址和字节大小。我希望能够转到该地址并返回一个字节数组,在这种情况下,[00001100]char变量和结构的数据成员相同。

一点伪代码将类似于:

for var.address until var.address = var.address + bytesize
do
byte_array = *var.address
var.address++

我遇到了一些问题,但是我对C有点陌生,所以我不知道如何将unsigned int视为地址/指针。其次,每当我取消引用该地址时,我都不知道如何从该地址中获取实际的字节,但这是我知道变量的类型的情况。

背景:我正在使用一个名为Pin的工具,该工具使我可以选择挂接到正在运行的进程,然后使用DWARF和ELF信息。所以我确实有权访问我要访问的虚拟内存空间

最佳答案

在这里看看epatelhexdump函数

Off-the-Shelf C++ Hex Dump Code

尽管有标题,但实际上是C代码。为了方便起见,我会在这里复制

#include <ctype.h>
#include <stdio.h>

void hexdump(void *ptr, int buflen) {
unsigned char *buf = (unsigned char*)ptr;
int i, j;
for (i=0; i<buflen; i+=16) {
printf("%06x: ", i);
for (j=0; j<16; j++)
if (i+j < buflen)
printf("%02x ", buf[i+j]);
else
printf(" ");
printf(" ");
for (j=0; j<16; j++)
if (i+j < buflen)
printf("%c", isprint(buf[i+j]) ? buf[i+j] : '.');
printf("\n");
}
}

关于c++ - 将无符号的int地址视为指针,并将其解引用为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611311/

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