ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
187
187
EMPFEHLEN
-
30.11.08 12:48 #1
- Registriert seit
- Nov 2008
- Beiträge
- 10
Hi,
bekannterweise ist nicht garantiert, dass die Funktion GetHashCode im .NET Framework in verschiedenen Frameworkversionen die gleichen Werte ausgibt. Dummerweise wurde unter Verwendung von GetHashCode eine Datenbank erstellt, auf die ich nun zugreifen muss. Mit dem FW 3.0 funktioniert es wunderbar also wollte ich um sicher zu gehen, dass mit zukünftigen FW-Versionen keine bösen überraschungen entstehen diese funktion selbst in meinem Code einbauen. Dazu hab ich mit Reflector die den Originalcode geholt und eingebaut. Allerdings liefert meine eingebaute variante andere Ergebnisse.
Hat jemand ne Ahnung woran das liegen kann?
das Original
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
[ReliabilityContract(Consistency::WillNotCorruptState, Cer::MayFail)] public: override Int32 __gc* GetHashCode() { fixed (Char __gc** str = *static_cast<__box Char __gc***>(this)) { Char __gc** chPtr = str; Int32 __gc* num = 0x15051505; Int32 __gc* num2 = num; Int32 __gc** numPtr = *static_cast<__box Int32 __gc***>(chPtr); for (Int32 __gc* i = this->Length; (i > 0); i -= 4) { num = ((((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0]); if (i <= 2) { break; } num2 = ((((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1]); numPtr += 2; } return (num + (num2 * 0x5d588b65)); } }
meine Variante
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
int GetHashCode(String^ str) { __int32 num = 0x15051505; __int32 num2 = num; __int32* numPtr=(__int32*)(Marshal::StringToHGlobalUni(str).ToPointer()); for (__int32 i = str->Length; (i > 0); i -= 4) { num = ((((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0]); if (i <= 2) { break; } num2 = ((((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1]); numPtr += 2; } return (num + (num2 * 0x5d588b65)); }Geändert von Muggefronc (30.11.08 um 14:32 Uhr)
-
Hi und willkommen
Auch wenn du neu bist: Doppelpost sind unerwünscht
http://www.tutorials.de/forum/net-ca...thashcode.html
Das Lesen der Forenregeln sollte doch noch gar nicht so lange her sein
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
30.11.08 17:48 #3
- Registriert seit
- Nov 2008
- Beiträge
- 10
Das war nicht als Doppelpost gedacht. Es geht ja dabei um 2 verschiedene Fragen. Einmal die Portierung nach PHP und einmal nach C++. D.h. die Posts sind ja in diesem Fall nicht als doppelt zu sehen?
Geändert von Muggefronc (30.11.08 um 17:53 Uhr)
-
01.12.08 12:48 #4
- Registriert seit
- Nov 2008
- Beiträge
- 10
Da such ich die ganze Zeit an der falschen Stelle...*tztz*
Die Funktion ist einwandfrei. Hab im Eifer des Gefechts nen falschen String übergeben.
Ähnliche Themen
-
GWT in JSP integrieren
Von Davtorik im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 25.01.10, 11:54 -
Algorithmus von String.GetHashCode()
Von Muggefronc im Forum .NET CaféAntworten: 3Letzter Beitrag: 09.12.08, 02:07 -
Welches php Framework (inkl. Framework-Übersicht)
Von rethus im Forum PHPAntworten: 10Letzter Beitrag: 14.11.07, 13:34 -
.net 1.x Framework wird installiert trotz .net 2.0 Framework
Von BWilhelm im Forum .NET CaféAntworten: 5Letzter Beitrag: 12.06.06, 07:28 -
AVI in c4d integrieren
Von Freakt im Forum Cinema 4DAntworten: 2Letzter Beitrag: 24.05.04, 01:48





Zitieren

Login






