gpt4 book ai didi

delphi - 在 Delphi 中将 GetHashCode 的 double 转换为整数

转载 作者:行者123 更新时间:2023-12-03 15:47:24 26 4
gpt4 key购买 nike

Delphi 2009 为 TObject 添加了 GetHashCode 函数。 GetHashCode 返回一个 Integer,用于 TDictionary 中的哈希。

如果您希望对象在 TDictionary 中正常工作,则需要适本地重写 GetHashCode,以便通常不同的对象返回不同的整数哈希代码。

但是对于包含双字段的对象该怎么办?如何将这些 double 值转换为 GetHashCode 的整数?

例如,在 Java 中通常完成的方式是使用 Double.doubleToLongBits 或 Float.floatToIntBits 等方法。后者的文档对其进行了如下描述:“根据 IEEE 754 浮点“单一格式”位布局返回指定浮点值的表示形式。”这涉及到对浮点值的不同位使用不同掩码的一些按位运算。

Delphi 中有这样做的函数吗?

最佳答案

我建议对 Gamecat 代码进行以下改进:

type
TVarRec = record
case Integer of
0: ( FInt1, FInt2 : Integer; )
1: ( FDouble : Double; )
end;

function Convert(const ADouble: Double): Integer;
var
arec : TVarRec;
begin
arec.FDouble := ADouble;
Result := arec.FInt1 xor arec.FInt2;
end;

这考虑了 Double 值的所有位。

(注释不能很好地与代码配合使用)

关于delphi - 在 Delphi 中将 GetHashCode 的 double 转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com