我现在在学习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。 如何将此数组更改为该值?或者请建议我更好的算法。
感谢。
答案 0 :(得分: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 */
答案 1 :(得分:0)
要将字符串转换为整数,已有一个此类函数可用的函数 strtoul将()。
您可以使用标准的strtoul()函数将字符串转换为整数值。