Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > как получить младшую часть от extended?


Автор: Чoо 18.12.2010, 21:07

Код

var
  i:integer;
  T:array[0..63] of DWord;
begin
  for i:=0 to 63 do
      T[i] := (int(4294967296*(abs(sin(i))))); 
end;

дело в том, что sin, abs,int - возвращают число типа extended. мне же от 64бит, нужно только 32. Как это сделать?

Автор: Чoо 18.12.2010, 22:54
во, сделал smile
Код

procedure THashmd5.get_sin_values;
var
  i:integer;
begin
  for i:=1 to 64 do
        T[i] := trunc(4294967296*abs(sin(i))); //2^32 = 4294967296;
                                             //берем только целую часть

end;  

совсем позабыл язык. 

Автор: Keeper89 19.12.2010, 00:16
Ничего себе код, всего 2 строчки, а я уже в ступоре, что он делает =)

Автор: Чoо 19.12.2010, 00:25
инициализирует массив T целыми числами. Это нужно в алгоритме поулчения хэша мд5, что бы устранить всякую регулярность во входных сообщениях.
в алгоритме надо взять синус по модулю, и умножить его на 2^32 а потом от полученного взять целую часть smile

Добавлено через 3 минуты и 26 секунд
http://ru.wikipedia.org/wiki/MD5
по тому алгоритму

Автор: mes 5.1.2011, 13:37
Цитата(Чoо @  18.12.2010,  21:54 Найти цитируемый пост)
//2^32 = 4294967296;

константа не напрягает ? 
есть например: Not(0)  smile

Добавлено через 2 минуты и 56 секунд
Цитата(Чoо @  18.12.2010,  20:07 Найти цитируемый пост)
мне же от 64бит, нужно только 32

так дело не только в кол-ве битов, но и способе их представления...
 smile 

Автор: Чoо 5.1.2011, 15:35
Цитата(mes @  5.1.2011,  13:37 Найти цитируемый пост)
константа не напрягает ? 

а там как ни крути, но в любом случае придется константу влепить, только в другом виде. Так что не сильно напрягает.


Цитата(mes @  5.1.2011,  13:37 Найти цитируемый пост)
так дело не только в кол-ве битов, но и способе их представления...

да... уже понял... я что-то думал, что extended - целочисленный тип, а оно вон как оказалось smile..

кстати класс уже сделал, как и курсовой, запостил его тут: http://forum.vingrad.ru/forum/topic-318666.html
впринципе было еще в планах перегрузить метод get_md5, что бы в качестве параметра передавать имя файла, но в задании этого не требовалась - оставил как есть smile

Автор: northener 6.1.2011, 06:46
Цитата(Чoо @  5.1.2011,  15:35 Найти цитируемый пост)
кстати класс уже сделал, как и курсовой

Упаси нас господи и "технический директор" от таких выпускников!
smile

Автор: mes 6.1.2011, 10:37
Цитата(Чoо @  5.1.2011,  14:35 Найти цитируемый пост)
 там как ни крути, но в любом случае придется константу влепить, только в другом виде. Так что не сильно напрягает.

так от вида много зависит.. всегда в голове держать что есть 4294967296 ? мне, например, даже полностью прочитать это число не хочется.. 
а при переходе на 64 битную, там мало того что константу вообще не запомнить, так еще и бегать по проекту, искать все старые "кляксы" для исправления..

Автор: mes 6.1.2011, 10:54
ну и вообще чтоб не мудрить :
http://www.delphizone.ru/type.php?command=LongWord
http://www.delphizone.ru/function.php?command=High

Автор: Чoо 7.1.2011, 16:23
Цитата(northener @ 6.1.2011,  06:46)
Цитата(Чoо @  5.1.2011,  15:35 Найти цитируемый пост)
кстати класс уже сделал, как и курсовой

Упаси нас господи и "технический директор" от таких выпускников!
smile

упаси нас господи и "технический директор" от таких выпускников, которые вообще ни чо не делают, кроме как покупают уже готовые курсовики/дипломники и прочее.
другими словами: через ошибки/кривость/кососость - нужно пройти. Не все ж сразу пишут так, как надо.

Добавлено через 1 минуту и 25 секунд
Цитата(mes @ 6.1.2011,  10:37)
Цитата(Чoо @  5.1.2011,  14:35 Найти цитируемый пост)
 там как ни крути, но в любом случае придется константу влепить, только в другом виде. Так что не сильно напрягает.

так от вида много зависит.. всегда в голове держать что есть 4294967296 ? мне, например, даже полностью прочитать это число не хочется.. 

...
да, вполне логично.. Исправлю это. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)