传统的C函数fseek( FILE *, offset, origin), 其中origin表示从哪个位置开计算offset并跳转到这个位置,
但是QFile的seek每一次跳转都是从0开始。
背景:
今天使用QFile读取二进制文件,需要分段读取配置信息数据,进行数据配置匹配,当中间出现一段应用数据时,需要跳过此段数据,读取下一个配置数据。
如图所示,第一个红框为当前配置信息,需要跳过蓝框数据地址,读取下一个红框内的配置信息。
一开始的操作是:
osf.read((char*)&osf_file.logarithmic, 1);
当我想跳过中间应与数据时,本能的以为会在当前位置进行偏移。
osf.seek(23680);//148x80x2Bytes 23680
假设之间应用数据大小为23680,
然后进行seek(23680),此时读取到的数据是不对的,得从开始地址0进行地址计算,也就是得在
当前地址+中间地址=偏移地址
osf.seek(23690);//148x80x2Bytes 23680