Ben herhangi bir şekilde değiştirmek için izin veya değiştirin değilim (bir makro gibi) bazı eski C kodu var.
Bu kod (sonunda) dize her karakter için karma değer bir işlem gerçekleştirilirken, kaynak dize dayalı bir özet (C) dize dışarı çıktılar.
#define DO_HASH(src, dest) { \
unsigned long hash = 1111; // Seed. You must NOT change this. \
char c, *srcPtr; \
int i; \
unsigned char hashedChar; \
\
srcPtr = src; \
c = *srcPtr++; \
while ( c) { \
hash = ((hash << 5) + hash) + c; \
c = *srcPtr++; \
} \
... // etc.
} //
Birkaç yıl önce, ben bir özet dize döndüren bir fonksiyonu olarak, PHP bunu uygulamak zorunda. PHP işlevi aynı C sonuçları yeniden zorundadır.
function php_DO_HASH($srcStr)
{
$hash = 1111; // Seed. You must NOT change this.
$index = 0;
$c = $srcStr[$index];
while ($c) {
$hash = (($hash << 5) + $hash) + ord($c);
$index++;
$c = $srcStr[$index];
}
... // etc.
}
Bu, bazı yıldır başarıyla çalıştı. Ancak, son birkaç gün içinde benim sunucu host CentOS yeni bir sürüme yükseltilmiş, ancak PHP sürümü değişmedi diyor. O zamandan beri, iki kodları şimdi farklı bir çıktı oluşturmak.
Herkes PHP sürümü yanlış yapıyorum ne kadar tavsiye eder misiniz? Teşekkürler.