Funktionsverständnisproblem
-
Hi Leute, ich hab probleme diese Funktion zu kapieren (ich möchte sie in python umschreiben):
int gslame( int num ) { int c = (num >> 16) & 0xffff; int a = num & 0xffff; c *= 0x41a7; a *= 0x41a7; a += ( (c & 0x7fff) << 16 ); if( a < 0 ) { a &= 0x7fffffff; a++; } a += (c >> 15); if( a < 0 ) { a &= 0x7fffffff; a++; } return a; } int gspassenc( char* pass ) { int passlen = strlen(pass); int num = 0x79707367; // "gspy" if( !num ) num = 1; else num &= 0x7fffffff; int a, c, d; for( int i = 0; i < passlen; i++ ) { d = 0xff; c = 0; d -= c; if( d ) { num = gslame( num ); a = num % d; a += c; } else a = c; pass[i] ^= a; } return passlen; }
-
Muss man das denn genau verstehen? Das kann man doch fast 1:1 nach Python übertragen, da dies die größtenteils gleichen Operatoren kennt wie C++. Das einzige was es glaube ich nicht gibt ist
&=
, aber das ist ja trivial nach&
und=
umschreibbar.