Как объявить константу Int64?

Я пытаюсь определить константу в 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:

enter image description here

. Это неверно.

Итак, когда я увидел 16-значное -шестнадцатеричное значение со старшим битом не установленным , я предположил, что оно может поместиться в 64-битное -битное целое со знаком.

На самом деле шестнадцатеричный эквивалент 14695981039346656037это... что-то другое. Роб, ты был прав! (вероятно)

5
задан Ian Boyd 24 April 2012 в 17:51
поделиться