我正在尝试在 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 Calculator 中,并转换为十六进制,让我相信十六进制等效14695981039346656037
于0x14650FB0739D0383
:
这是不正确的。
因此,当我看到一个 16 位十六进制值且高位未设置时,我认为它可以放入 64 位有符号整数。
实际上,十六进制等价物14695981039346656037
是……别的东西。罗布,你是对的!(大概)