Mailinglisten-Archive |
Michael Schoenboeck schrieb: > Moin, > > Also, ich habe lauter 18 stellge zahlen (IDs) in einer DB. > Jetzt will ich die anzahl der stellen verkleinern, aber nicht in dem ich > einfach ein paar werte weglasse, sondern am liebsten mit einer formel, also > irgentwas dividiert durch oder so. > So das der wert kleiner wird aber denn noch eindeutig ist! > Also das es nich vorkommen kann, das eine andere 18 stellige zahl mit der > formel das selbe ergebniss liefert wie wo anders.. > > Es draf auch ein STRING rauskommen, also HEX oder was weis ich.. Nur sollte > sich die anzahl der zeichen reduzieren ohne die eindeutigkeit zu > verlieren... rechne doch einfach in eine andere Basis um z. B. 16 (HEX) oder noch besser 62 (HEX + G-Z + a-z) macht 10 stellig 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -------------------------------------------------------------- 01234567891111111111222222222223333333334444444444555555555566 0123456789012345678901234567890123456789012345678901 siehe Basisumrechnung 000.000.000.000.000.000 = 00000000000 000.000.000.000.000.001 = 00000000001 ... 000.000.000.000.000.061 = 0000000000z 000.000.000.000.000.062 = 00000000010 ... 999.999.999.999.999.999 = 7kBbTme0sB1 999.999.999.999.999.999 / 62 MOD: 7 = 7 = 16.129.032.258.064.516 / 62 MOD: 46 = k = 260.145.681.581.685 / 62 MOD: 11 = B = 4.195.898.090.027 / 62 MOD: 37 = b = 67.675.775.645 / 62 MOD: 29 = T = 1.091.544.768 / 62 MOD: 48 = m = 17.605.560 / 62 MOD: 40 = e = 283.960 / 62 MOD: 0 = 0 = 4.580 / 62 MOD: 54 = s = 73 / 62 MOD: 11 = B = 1 / 62 MOD: 1 = 1 man könnte natürlich noch beliebige Zeichen dazunehmen und somit die Basis erhöhen und in einem noch kürzeren String zu enden, z. B. ()[]!?,.=;:#-_+*§$%&/ wobei das aber bei den meißten Zeichen wenig Sinn hat wenn die ID als URL-Paramter übergeben werden soll. -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive