Я пытаюсь определить константу в 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-битное -битное целое со знаком.
На самом деле шестнадцатеричный эквивалент 14695981039346656037
это... что-то другое. Роб, ты был прав! (вероятно)