张飞鹏1990 发表于 2011-4-7 13:59:30

什么是“偏移”?

不怕我各位高手笑话,小弟问个不是问题的问题
                           经常听说偏移怎么怎么的,到底是个什么概念啊。谢谢啊!!!

fulidiannaokeji 发表于 2011-4-7 21:34:40

就是偏一点移一点位置

websrc 发表于 2011-4-7 21:50:22

看过WINHEX的一些资料,说道查找16进制数时,开始不明白为什么“偏移计算”后面的值一会是510=0,一会又是512=510。呵呵,别笑我有点笨哦,但之前我确实不知道,我不知道有没有和我一样的笨鸟。
现在呢,把这个“为什么”放在这,算是给和我一样的笨鸟一点帮助。知识总会越积越多,对吧。
不绕弯子了
先举几个例子:如
1、查找EB5290时,我们要设偏移计算为512=0
2、查找55AA时候,我们要设偏移计算为512=510
3、再补充一个1024=512
注:等号前是我们要搜索分块大小,后面是从分块中起始搜索的位置。
详细解释,1、我们知道EB5290(或EBFE90/EB3C90/EB5890)是DBR的头三个字节,而55AA是MBR,EBR或DBR的结束标志,也就是说,EB5290是在一个扇区中的第0、1、2个位,而55AA是在一个扇区的第510、511这最后两个字节的位置。
我们知道,如果要在一个扇区中要找指定的字符(16进制),那么我们就要从头搜索到尾。如果说我们知道我们要搜索的字符在一个扇区的后半部分,那么我们就可以从一个扇区的中间位置开始向下搜索,这样就提高了搜索的速度。
好了
例1中:EB5290是在扇区的第0、1、2字节,那么我们只能以扇区为单位,从每个扇区的第一个字节搜索到最后一个字节。也就是 512=0 即:以512字节(一个扇区大小)为单位,从0位置开始搜。
例2中:55AA在510,和511个字节上(注:扇区从0~511),所以我们可以以扇区为单位从510位置开始搜索。即512=510,我们对每个扇区只看它的最后两个字节。
   通过以上的分析来举一反三,我们要以两个扇区为单位从中间位置开始可设偏移计算条件为1024=512。
我们要只搜扇区中的第123个字节(从0~512),看是不是AB(其实就成了判断)偏移计算条件为512=123。
大胆一点,我们以100为单位,搜后面5个字节看是不是0011223344,偏移计算条件为100=95。
   哈...现在该明白偏移计算条件等式的意思了哦。


不知道分区类型的时候查找DBR的EB3F90时偏移调制512=0要设置通用字符3F
查找55AA的结束标志时偏移调制512=510

wenxueshan 发表于 2014-8-31 17:38:07

受益匪浅
页: [1]
查看完整版本: 什么是“偏移”?