程序使用java做後台服務,數據處理時使用了java的hashcode,Delphi程序也需要生成這個hashcode,為了一致,所以要在Delphi下實現和Java一樣的算法。
下面即Delphi版的hashCode:
function hashCode(val: string): Integer;
var
i: Integer;
res: Extended;
x: Integer;
function RoundEx(x: Extended): Integer;
begin
Result := Trunc(x) + Trunc(Frac(x) * 2);
end;
begin
res := 0;
for i := 1 to Length(val) do
begin
res := res + Ord(val[i]) * Power(31, Length(val) - (i - 1) - 1);
end;
Result := RoundEx(res);
end;