Delphiで定数を定義しようとしています:
const
FNV_offset_basis = 14695981039346656037;
そして、私はエラーを受け取ります:整数定数が大きすぎます
注:
14,695,981,039,346,656,037
10進数は16進数と同じ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;
修正
私の基本的な仮定は間違っていました。
Windows 7 Calculatorに貼り付け14695981039346656037
て、16進数に変換すると、16進数に相当するもの14695981039346656037
は0x14650FB0739D0383
次のようになります。
それは正しくありません。
したがって、上位ビットが設定されていない16桁の16進値を見たとき、64ビットの符号付き整数に収まると推測しました。
実際には、16進数に相当するもの14695981039346656037
は...何か他のものです。ロブ、あなたは正しかった!(おそらく)