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