|
|
|
|
|
|
|
#1 (permalink) |
|
Moderator
Registriert seit: 18.06.2008
Beiträge: 5.995
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() |
Hi,
ich möchte Strings auf Zahlen von der Größenordnung 0-3 bzw. 0-4 abbilden. Mein Ansatz wäre den String in einen Integer umzuwandeln und dann Modulo 3 bzw. 4 zu nehmen. Allerdings fällt mir keine geeignete Möglichkeit ein einen String auf einen Integerwert zu "casten". Eine einfache Umwandlung in ASCII oder so wäre blöd da so eigentlich nur der letzte Buchstabe die Zahl die ich suche bestimmt (auf Grunde des Modulo eben). Daher wäre eine andere Lösung die Buchstaben in ASCII umzuwandeln und alle Einzelwerte zu addieren. Meine Frage ist jetzt ob ihr entweder eine schon gegebene Hashfunktion kennt die aus einem String einen Integer macht (möglichst gleich verteilt auf den niedrigen Stellen) oder eine Idee habt wie ich das lösen könnte. Das eine Gleichverteilung natürlich immer auf den String drauf ankommt ist mir klar aber damit muss ich eben leben |
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#2 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 21.228
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Die Kriterien sind mir nicht klar. Kannst ja ein md5 ins 10er System casten.
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
#3 (permalink) |
|
Moderator
Registriert seit: 18.06.2008
Beiträge: 5.995
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() |
Wie caste ich denn einen md5 Hash in einen Int? Bzw. nach welchen Kriterien denn beim md5 sind ja immer noch Buchstaben dabei.
Eigentlich geht es mir darum verschiedene Pfade zu Dateien auf einen Index z.B. 0-4 zu verteilen. Da die Pfade sehr oft auf die selbe Endung hinauslaufen kann ich z.b. die einzelnen Buchstaben nicht in ASCII Werte umwandeln da so der letzte ASCII Code sehr oft gleich wäre und somit also auch der modulo 5 gleich. Wichtig ist außerdem dass der selbe Pfad immer auf den selben Index gehasht wird, also eine zufällige Verteilung fällt somit weg. |
|
|
|
|
|
#5 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 21.228
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
@Florian: MD5 ist eine Hexzahl - kann also theoret. in eine Zahl zur Basis 10 umgewandelt werden. Im Prinzip kannst Du ja auch nen Substr () verwenden, md5 ist ja ausreichend zufällig, und dann nen Modulo ziehen.
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
#6 (permalink) |
|
Moderator
Registriert seit: 11.05.2008
Beiträge: 3.294
![]() ![]() ![]() |
Naja, die Hexzahl ist aber verdammt gross: 3,4028236692093846346337460743177e+38
crc32() ist ganz nett, habe auch mal nach einer Hashfunktion in den Zahlenbereich gesucht und dafür eignet sich das eigentlich ganz gut. |
|
|
|
|
|
#7 (permalink) |
|
Moderator
Registriert seit: 18.06.2008
Beiträge: 5.995
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() |
Stimmt, da hab ich gar nicht daran gedacht. Grr danke.
Ich denke ich werde wie von Chriz vorgeschlagen abs(crc32($string)) % 4 nutzen. Ich brauche wirklich den Index und möchte damit keinen Ordner anlegen sondern eben nur die Pfade hashen. Noch als Anmerkung: PHP-Code:
Code:
1.653811759703E+38 0 |
|
|
|
|
|
#8 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 21.228
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
PHP-Code:
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
#9 (permalink) |
|
Moderator
Registriert seit: 18.06.2008
Beiträge: 5.995
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() |
Stimmt so würds auch gehen.
Ich hab nen kurzen Benchmark gemacht mit glaub 100 000 Berechnungen: 0.66918897628784 sec crc32 5.063668012619 sec md5 Von daher werd ich wohl bei crc32 bleiben |
|
|
|
|
|
#10 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 21.228
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Wow, was für ein Unterschied
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] File-Upload UPLOAD_ERR_PARTIAL | cycap | PHP Einsteiger | 95 | 29.01.2009 14:12 |
| string in string suchen,ersetzen,zusammenfügen und update machen | litterauspirna | PHP Einsteiger | 24 | 08.01.2009 13:38 |
| PHP5 SOAP - Problem mit Arrays | Calexico | PHP-Fortgeschrittene | 0 | 11.09.2008 12:06 |
| Event abfangen | Ambience | JavaScript, Ajax und mehr | 4 | 30.08.2007 14:36 |
| Type Hinting - must be an instance of integer, integer given | mAy^daY | PHP Tipps 2007 | 1 | 06.03.2007 14:55 |
| String in Integer | mark_gebert | HTML, Usability und Barrierefreiheit | 3 | 26.12.2006 15:20 |
| String in Array als Integer definieren | cyberholic | PHP-Fortgeschrittene | 2 | 01.12.2006 20:29 |
| String auslesen | Shaira | PHP Tipps 2006 | 11 | 01.12.2006 17:52 |
| string -> integer | obi | PHP Tipps 2006 | 2 | 25.07.2006 00:32 |
| Integer in String umwandeln | Luke_Skyscraper | PHP Tipps 2005-2 | 3 | 07.08.2005 17:29 |
| Integer String etc. | FBI | PHP Tipps 2005-2 | 2 | 03.08.2005 20:21 |
| string -> int, nur wenn string zahl ist | PHP Tipps 2005-2 | 3 | 06.06.2005 12:33 | |
| where string von einer funktion zu anderen transportieren | PHP Tipps 2005 | 5 | 03.03.2005 16:29 | |
| php code als string umwandeln | PHP Tipps 2005 | 8 | 23.02.2005 18:03 | |
| String mit Leerzeichen auffüllen | HTML, Usability und Barrierefreiheit | 2 | 27.10.2004 18:47 | |