首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

byte数组查找数据段算法,该如何解决

2012-02-21 
byte数组查找数据段算法buffer:array[0..255]ofbyte我要在这个数组中查找比如[$13,$0,$10,$0]一段数组该

byte数组查找数据段算法
buffer:array[0..255]   of   byte;
我要在这个数组中查找比如[$13,$0,$10,$0]一段数组该如何写算法,或者给个思路
当然我可以用   for   do   +   if   then   来实现,但如果要查找别的数组段就麻烦了


[解决办法]
上面的调用,有一点点需要改正的地方:(下面是改正后)

for I := Low(Buffer) to High(Buffer)-SizeOf(SubBuf)+1 do
if SysUtils.CompareMem(@Buffer[I], @SubBuf[Low(SubBuf)], SizeOf(SubBuf)) then
ShowMessage(Format( '找到一段,起始处位于%d号元素 ',[I]));


楼主及上面各位朋友,试一下 CompareMem 吧!其实就是 C/C++ 里的 memcmp 函数。实在是好用啊,直接对内存块进行比较。
[解决办法]
function PosMemEx(subBuf, Buf : array of byte; Offset: Cardinal = 0):Integer;
var
I : Integer;
begin
Result:=-1;
for I := Low(Buf) + Integer(Offset) to High(Buf)-SizeOf(SubBuf)+1 do
if SysUtils.CompareMem(@Buf[I], @SubBuf[Low(SubBuf)], SizeOf(SubBuf)) then
begin
Result:=I;
break;
end;
end;

热点排行