Сложно описать название, скажем бред в Integer в Win и Linux

Lerico

Новичок
Сложно описать название, скажем бред в Integer в Win и Linux

Есть функция расшифроки
PHP:
function StrDecrypt($str)
{
	$startkey = 124;
	$multkey = 45678;
	$addkey = 14947;
	$result = '';
	for ($i=0;$i<strlen($str);$i++)
	{
		$result .= chr( ord( substr( $str,$i,1 ) ) ^ ( $startkey>>8 ) );
		$startkey = (int)(ord(substr($str,$i,1)) + $startkey) * $multkey + $addkey;
	}
	return $result;
}
Вгоняю есть зашифрованный текст... и в тот момент когда расчет превосходит максимальное значение
винда и никсы ведут ся по разному :(
В винде при одинаковом зашифрованном тексте $startkey будет равняться (4 закодированных буквы) 19425353 770604890993 7.16339051288E+013 -7.35640908169E+013
В никсах 19425353 770604890993 71633905128803 -73564090816877 -85190676289437
как видим после 2 числа разные цифры, и в следствие расшифровка рушится, добился чтобы в никсах появился 3.0~чет_там+16! но это тоже не то...



Вопрос, как заставить скрипт работающей в никсах, думать также как и в винде?
 

tony2001

TeaM PHPClub
ну например.. никак?

770604890993 71633905128803 -73564090816877 -85190676289437 - это всё 64-битные integers, на 32-битной винде они ессно будут отображаться как очень большие floats.
более того, даже на 64-битной винде они тоже будут транслироваться в floats, т.к. long в win64 - такой же, как и в win32. привет майкрософту.
 
Сверху