标题:请问:怎样能在16进制中查找字符?
只看楼主
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
缓冲区中是:ABaB  ,对应 查找 aBaB  

ByteFind=aBaB  ByteFind2=AbAb,我第一次查找时,只传了第一个字节进去,
        bfw1 = InStrB(Start2, bStrand, ByteFind(0))                  这里查找 a
        bfw2 = InStrB(Start2, bStrand, ByteFind2(0))                 这里查找 A
        
然后在循环中,再依次比较后续的字符。每次都是与二种字符相比较,所以不会漏
        For i = 1 To UBound(ByteFind)
            If bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) Then     '如果等于其中一个       这里使用循环比较 B\b、a\A、B\b 三种情况,所以就不会漏

第一次是 bfw2 找到,然后bfw1为0或为更大值,经判断后,使用 bfw2
然后循环中
B=ByteFind(1)
a=ByteFind(2)
B=ByteFind(3)
都命中这个判断的 bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) 前半部分,因为这个判断是 or ,所以整个表达式都是真,循环继续。
如果命中后半部分,也会得到真的结果。而后半部分对应的是 查找字符串的 大小写情况。
所以,我的代码不会漏掉这种情况。

-------------------
今天是在另一个电脑上,没有测试环境,所以自己没法测试。

授人于鱼,不如授人于渔
早已停用QQ了
2020-08-16 17:42
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
不会漏掉????

好吧~ 你说不会漏掉,就不会漏掉吧。

你不实测,我无语了!

我经过实际测试,发现有遗漏现象,而你却说“不会漏掉”,我本是发贴求助的,不想在这事上掰扯不清。

结了。
2020-08-17 09:05
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:0 
看楼主的意思,不管给出查找条件的形式如何,最终还是要找字符序列,如果是这样的话,使用字节直接比对,是有问题的,即使区分大小写也一样,这主要是与字符集和字符编码有关,有些情况是不能得到正确结果的,一般字符查找都是使用字符比对,在有一些情况下是能够转化为字节比对,这些都与字符编码有关,不确定这些条件,所有查找操作以及优化都是无用的。
2020-08-17 11:20
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
自己写kmp算法,扫描到字符时全部变成大写字母在大写模式下匹配。vb在ide环境下速度比较慢,但编译后速度会提升很多,应该不比instrb慢多少。

能编个毛线衣吗?
2020-08-17 20:21
yogod
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-5-12
得分:0 
关注,学习,我也好奇winhex的搜索速度的问题,实测内存映射的方式已经接近winhex的搜索速度。

关于大小写的问题,我认为winhex可能是线程的问题,是在搜索16进制字符串字节的时候,根据不同的组合数量,开特定数量的线程搜索同一段映射。

关于遗漏的问题,我觉得在两个块连接处的就会漏掉,解决的办法是MapViewOfFile时重叠512字节,我正在解决这个问题。

[此贴子已经被作者于2020-9-26 11:36编辑过]

2020-09-26 09:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502811-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.230161 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved