Mailinglisten-Archive |
Guten Tag, ich muss für ein Projekt, eine vorgegebene C Funktion in PHP umsetzen. Da ich aber nicht gerade ein begnadeter C Programmierer bin, wäre ich für jede Hilfe dankbar. Hier zuerst die Funktion in C: void sum_add(const char* str) { ulong sum; size_t len=strlen(str); for (size_t i=0; i<len; i++) { sum = (sum + ((ulong)str[i] * ((i+1)<<4))) % 0x10000; } return sum; } Ich habe das mal 1:1 übernommen. Ok nicht ganz, ich vermute mal das der Typecast ulong schon seinen Berechtigung hat und auch was das Bitweise verschieben angeht, bin ich mir nicht sicher ob das so tut ;) Meine jetzige Funktion (die nicht wirklich funktioniert oder besser gesagt kein vernünftiges Ergebnis liefert) function sum_add($str){ $sum = 0; $len = strlen($str); for ($i=0; $i < $len; $i++){ $sum = ($sum + ($str[$i] * (($i+1)<<4))) % 0x10000; } return($sum); } Das ganze ist Teil eines Schlüsselgenerators, der Werte zu erst in einen Hexwert umwandeln soll. Als Beispiel was raus kommen soll, ist folgendes Anegeben (in der Doku zu der C Funktion): sum_add("Dr.X"); soll liefern 0x00003120 bzw. der Schlüssel sollte dann 00003120 sein. Grüße und Danke im Voraus Alexander Häussel --- celsius37.com AG
php::bar PHP Wiki - Listenarchive