📄 bmsearch.cpp
字号:
#include "stdafx.h"
#include "BMSearch.h"
//关键字初始化
//关键字指针 关键字长度
int CBMSearch::config(unsigned char *key,int keylen)
{
int i;
//长度不能大于256
if( keylen>MAXKEYLEN ) return 1;
m_KeyLen=keylen;
memcpy(m_Key,key,m_KeyLen);
//变量清零
memset(m_KeyChar,0xff,MAXKEYLEN);
memset(m_Table,0xff,256);
//初始化偏移量
for(i=0;i<keylen;i++)
{
if( m_Table[ key[i] ]!=0xff ) m_KeyChar[i]=m_Table[ key[i] ];
m_Table[ key[i] ]=i;
}
return 0;
}
//查找
//待查找数据指针 待查找数据长度 返回找到的指针
int CBMSearch::search(unsigned char *data,int datalen,unsigned char *position)
{
int i;
unsigned char t,*p;
for(i=m_KeyLen-1;i<datalen;i+=m_KeyLen)
{
t=m_Table[ *(data+i)];
if( t!=0xff )
{
while( t!=0xff )
{
p=data+i-t;
if( !memcmp(p,m_Key,m_KeyLen) )
{
//匹配
position=p;
return 0;
}
//不匹配
t=m_KeyChar[t];
}
}
}
return 2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -