gpt4 book ai didi

delphi - 如何声明 Int64 常量?

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

我正在尝试在 Delphi 中定义一个常量:

const
FNV_offset_basis = 14695981039346656037;

我收到错误:整数常量太大

Note: 14,695,981,039,346,656,037 decimal is equal to 0x14650FB0739D0383 hex.

我如何声明这个Int64常量?

我尝试过的其他一些事情:

const
FNV_offset_basis: Int64 = 14695981039346656037;
FNV_offset_basis = Int64(14695981039346656037);
FNV_offset_basis: Int64 = Int64(14695981039346656037);


var
offset: LARGE_INTEGER;
begin
//recalculate constant every function call
offset.LowPart = $739D0383;
offset.HighPart = $14650FB0;

更正

我的基本假设是错误的。

14695981039346656037 粘贴到 Windows 7 计算器中,并转换为十六进制,使我相信 14695981039346656037 的十六进制等效项是 0x14650FB0739D0383:

enter image description here

这是不正确的。

因此,当我看到一个 16 位十六进制值,且高位未设置时,我认为它可以容纳在 64 位有符号整数中。 p>

实际上,14695981039346656037 的十六进制等效项是......其他东西。罗布,你是对的! (可能)

最佳答案

问题中的十六进制转换不正确。该数字实际上是 $cbf29ce484222000 并且不适合有符号 64 位整数。您需要一个无符号 64 位整数来表示它。 Delphi 5 中没有未签名的 UInt64,所以你运气不好。在您的 Delphi 版本中没有可以表示该数字的整数数据类型。

如果您需要的话,您也许可以将位模式解释为带符号的值。在这种情况下,您将得到一个负数。

关于delphi - 如何声明 Int64 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302910/

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