Erzeuge eindeutige ID aus alphanumerischer Zeichenfolge

7

Ich muss eine eindeutige ID (nur int) aus einer alphanumerischen Zeichenfolge generieren.

z.B. Ich habe Sicherheits-ID = 'ABC123DEF' Ich sollte in der Lage sein, eine eindeutige ID (nur "int") der "Sicherheits-ID" zu erzeugen, so dass die eindeutige ID immer konstant ist.

z.B. Sicherheits-ID: ABC123DEF Int ID: 9463456892

Damit kann ich die Int-ID in der Datenbank speichern und die Sicherheits-ID jederzeit von Int ID beziehen.

Einige Beispiele: PBG_CD_20120214_.2 | 201202-CMG188963_T | PBG_TD_20120306_.0001 3 Beispiele: -PIPE getrennt

    
Anshul 24.09.2012, 19:11
quelle

2 Antworten

21

Verwenden Sie einfach den Java Hashing-Algorithmus. Nicht 100% einzigartig, aber Sie können es als Basis verwenden und etwas hinzufügen, um die Eindeutigkeit auf einem viel kleineren Kollisionssatz zu garantieren:

%Vor%

Um eine 100% ige Kollision zu vermeiden, benötigen Sie eine Primzahl, die größer ist als der größere Unterschied zwischen Ihren Charakteren. Für 7-Bit-ASCII benötigen Sie etwas über 128. Verwenden Sie statt 31 also 131 (die nächste Primzahl nach 128). Der Teil, den ich nicht überprüft habe, ist, ob der generierte Hashwert größer als die Größe Ihres Long-Ints wird. Aber du kannst es von dort nehmen ...

    
mprivat 24.09.2012 19:24
quelle
1

Sie könnten jedes Zeichen als zweistellige Zahl codieren, 0-9 als Zahlen selbst, 10-35 als A-Z.

Zum Beispiel wäre 9AC8 09 10 12 08 = 09101208.

BEARBEITEN: Für eine kleine Zahl könnten Sie diesen Ansatz (mit Java-style psuedocode) verwenden:

%Vor%     
redolent 24.09.2012 19:15
quelle