gpt4 book ai didi

c - 如何在 C 中查找/打印 hexdump 的偏移量

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

我有一个内存块,表示为十六进制字节的集合。这是以十六进制转储格式查看的,其中左列的值是该行中偏移量的前两个十六进制数字。每个字节的列标题是该偏移量的最后一位。它看起来像这样(我缩写了一些部分以节省时间/空间):

  0  1  2  3 ..... 9  A  B .... F
0 AD 1E 08 ......................
1 .......
. .......
. .......
9 .......
A .......
. .......
F .......
10.......
11.......
. .......
1E.. DE
1F.......

我想使用指针遍历该内存块到特定字节。然后我想打印该偏移量的十六进制表示(例如,DE 将位于偏移量 1E1 处)。我的代码现在看起来像:

   uint8_t *p = baseAddr;//create a pointer that points to the first byte of memory in the array
for(int i = 0; i < Length; i++){//use a for loop to move p from the start to the maximum length of the specified region
if(*p == Byte){//if it matches the byte you're looking for
fprintf(Out, "%02X ", p);//print the location of the current byte
}
p++;
}

但是它没有打印出正确的值,而是打印出类似“800419B1”的内容,并警告我“格式‘02X’需要类型‘unsigned int’,但参数 3 的类型为‘uint8_t *’”

偏移量是我应该跟踪的东西,还是我可以从指针获得的东西?如果可以,我该怎么做?

最佳答案

p中减去基地址得到偏移量:

fprintf(Out, "%02X ", p - baseAddr);

你实际上不需要p,你可以只使用i:

for (int i = 0; i < Length; i++) {
if (baseAddr[i] == Byte) {
fprintf(Out, "%02X ", i);
}
}

关于c - 如何在 C 中查找/打印 hexdump 的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441708/

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