c -我如何在文件中写入十六进制数据,以便不写入额外的数据(如hexeditors)?



我想为我的项目制作一个小型十六进制编辑器。

所以我写了一个这样的函数(用新代码替换原始代码):
int replace(FILE *binaryFile, long offset, unsigned char *replaced, int length) {
if (binaryFile != NULL) {
for (int i = 0; i < length; i++) {
fseek(binaryFile, offset + i, SEEK_SET);
fwrite(&replaced[i], sizeof(replaced), 1, binaryFile);
}
fclose(binaryFile);
return 1;
} else return -1;
}
所以我写了这段代码来测试这个函数,并把它发送到地址0x0:
unsigned char code[] = "x1ExFFx2FxE1";
我得到了这个十六进制的结果:
1e ff 2f e1 00 10 2b 35 ff fe 07 00

但是E1 (00 10 2b 35 ff fe 07 00)之后我不需要数据

我如何写函数,因此只有将数据发送到存储?

sizeof(replaced)错误。replaced是一个unsigned char *,所以这不是你想要的大小。

您可能需要sizeof(unsigned char)sizeof(*replaced)

现在,你写的东西是原来的八倍。

注意,你也可以在一个步骤中写:

if (binaryFile != NULL) 
{
fseek(binaryFile, offset, SEEK_SET);
fwrite(replaced, sizeof(unsigned char), length, binaryFile);
}

相关内容

  • 没有找到相关文章

最新更新