D
dadabox
Unregistered / Unconfirmed
GUEST, unregistred user!
你以前写的那个HashIt函数,应该是不管字串长度,都生成统一固定的八位阿拉伯数字,
但我这儿遇到一个问题,只生成了七位。能帮我解决吗?还有,这个算法是否绝对可靠?
附上HashIt函数:
function HashIt(str:string):Integer;
var
i,len,m:byte;
mmWord;
begin
len:=Length(str);
mm:=0;
for i:=1 to len do
begin
m:=byte(str);
mm:=mm xor m;
mm:=mm+(Word(m) shl 6);
m:=mm shr 24;
mm:=(mm shl 8) xor m;
end;
Result:=(mm xor $58A30716) mod 100000000;
end;
遇到的字串:44T44466246,44044466246,44V44466246等都不行。生成七位甚至六位的字串。
但我这儿遇到一个问题,只生成了七位。能帮我解决吗?还有,这个算法是否绝对可靠?
附上HashIt函数:
function HashIt(str:string):Integer;
var
i,len,m:byte;
mmWord;
begin
len:=Length(str);
mm:=0;
for i:=1 to len do
begin
m:=byte(str);
mm:=mm xor m;
mm:=mm+(Word(m) shl 6);
m:=mm shr 24;
mm:=(mm shl 8) xor m;
end;
Result:=(mm xor $58A30716) mod 100000000;
end;
遇到的字串:44T44466246,44044466246,44V44466246等都不行。生成七位甚至六位的字串。