【发布时间】:2012-04-24 17:26:09
【问题描述】:
我正在尝试在 Delphi 中定义一个常量:
const
FNV_offset_basis = 14695981039346656037;
我得到错误:整数常数太大
注意:
14,695,981,039,346,656,037十进制等于0x14650FB0739D0383十六进制。
如何声明这个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:
这是不正确的。
所以当我看到一个 16 位十六进制值,高位 未设置时,我推测它可以放入 64 位 有符号整数。 p>
实际上,14695981039346656037 的十六进制等价物是……别的东西。罗布,你是对的! (大概)
【问题讨论】:
-
你试过了吗:
FNV_offset_basis = $14650FB0739D0383; -
备案:“FNV_offset_basis = 14695981039346656037”适用于 Delphi XE2。
-
@RRUZ 这个问题是关于 unsigned 64 位整数的。这是关于 Delphi 及其 signed 64 位整数的。该线程中的一个聪明的答案是“购买新版本的 Delphi”(谢谢)
-
@RobKennedy 也删除了我的 :)
标签: delphi constants delphi-7 delphi-5 int64