【发布时间】:2021-03-06 19:39:00
【问题描述】:
最近一直在做一些脚本,今天遇到了一个小问题,我想交换一个二进制文件的2个偏移量的值。就像将位置 0x00 的值与 0x01 的值互换一样,我尝试使用 file.seekp(0x00) 然后获取该值,将其保存在一个字符中,然后将值插入位置 0x01 我使用了 file.seekp (0x01) 然后是file.put(char),但主要问题是它没有修改0x01的值,只是将char添加到它。
有什么办法可以修改它的值吗?
在尝试交换前两个偏移值之前:
尝试交换前两个偏移值后:
基本上,我需要的是交换它们,而不是将第一个值添加到第二个偏移量。
我使用的代码:
char c[1];
fstream file(path, ios::in | ios::out | ios::binary );
file.seekp(0x00);
c[0] = file.get();
file.seekp(0x01);
c[1] = file.get();
file.put(c[0]);
file.seekp(0x00);
file.put(c[1]);
【问题讨论】:
-
“只添加字符”是什么意思?显示一个minimal reproducible example,之前的文件内容,之后的文件内容。
-
每当您执行
get或put时,它会获取或放置当前偏移量处的字符并将偏移量提前1。因此您的第一次放置将位于偏移量2。
标签: c++