0

我现在正在学习 C,我正在解析一个原始注册表文件并阅读它。

我现在有一些问题,

000011E0    00 00 00 00 60 01 00 00 B9 01 00 00 00 00 00 00 
000011F0    20 C0 26 00 FF FF FF FF 00 00 00 00 FF FF FF FF 
00001200    10 FC 00 00 FF FF FF FF 4C 00 01 00 00 00 00 00
this is hex value of REGISTRY file.

fseek(fp,0x11F0,SEEK_SET);

char tmp[4];
int now = ftell(fp);
for(int i = 0 ; i < 4 ; i++){
    tmp[i] = fgetc(fp);
    }

我制作了这个 tmp 数组,但我需要 0x0026c020。如何将此数组更改为该值?或者请建议我更好的算法。

谢谢。

4

2 回答 2

2

如果您知道该值以与主机操作系统架构相同的字节顺序存储,您可以这样做:

int value = *(int *)tmp;

但是,您不应该在此处那样以倒序读取字节——这会改变字节顺序并导致错误的值。尝试这个:

int value;
if (fread(&value, sizeof(value), 1, fp) != 1) {
    /* Could not read, handle error. */
}

/* value is set, inspect it */
于 2012-07-17T04:21:51.920 回答
0

要将字符串转换为整数,已经有可用的函数,其中一个函数是 strtoul()。

您可以使用标准 strtoul() 函数将字符串转换为整数值。

于 2012-07-17T04:57:12.437 回答