Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: От чего зависит результат crc32() на разных серверах?
Форумы портала PHP.SU » » Вопросы новичков » От чего зависит результат crc32() на разных серверах?

Страниц (1): [1]
 

1. LShark - 26 Апреля, 2013 - 19:18:46 - перейти к сообщению
Возникла проблема - используется строка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $isto=abs(crc32($isto)); (abs - так как crc32 бывает и отрицательным)



В переменной $isto, к примеру, вношу:

Запрашиваю это на винде под Vertrigo Serv

Запрашиваю это на сервере freewebhostingarea.com - получаю:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 3693160097


ПОЧЕМУ?

Проблема, правда, еще в том, что локально у меня .htaccess и в нем строка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8


При попытке поместить этот файл в корень сайта на freewebhostingarea.com - получаю ошибку доступа и рекомендацию удалить этот файл.
ЗЫ. Кстати, кто нить знает, как эту директиву засунуть на этот хостинг?
Но при удалении этого файла на локальном сервере - все равно значение получается то же самое, так что он тут ни при чем, скорее всего.


РЕШЕНО.

Оказалось. что проблема в битах системы, на которой стоит пыпых...

Если 64 - то вместо отрицательного значения получаем 64битное другое.

Решение:

Где
$string - строка, из которой надо получить crc32

CODE (htmlphp):
скопировать код в буфер обмена
  1. $crc = abs(crc32($string));
  2.  if( $crc & 0x80000000){
  3. $crc ^= 0xffffffff;
  4.  $crc += 1;
  5.  }

Этот код на любой системе даст одинаковый результат.

 

Powered by ExBB FM 1.0 RC1