AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MD5-Hashwert als 40-stellige Dezimalzahl

Ein Thema von bcvs · begonnen am 8. Dez 2021 · letzter Beitrag vom 9. Dez 2021
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#7

AW: MD5-Hashwert als 40-stellige Dezimalzahl

  Alt 8. Dez 2021, 13:45
Joar, nativ kannst das in Delphi nunmal dann nur als String umsetzen.
Und "führende Nullen" besagen auch, dass es eine Stringrepresentation sein soll.

StrToInt geht nicht, denn das Ergebnis müsste ein 128-bit-integer sein, ist also viel zu groß.
Es gibt auch StrToInt64, aber da Delphi standardmäßig keinen 128-Bit Typen besitzt und somit auch kein passendes StrToIntXyz, bleibt es hier nunmal hängen.

Man könnte aber z.B. mit einer BigInt-Implementation hier eine Lösung finden, falls man das nicht selber binär in Integer aufteilen will, mit denen man dann arbeiten kann.



Delphi hat im 32-Bit-Compiler (System.pas) sogar Beispielcodes/-funktionen drin,
wo mit zwei Integern der Int64 emuliert wird.

Das kann man mathematisch problemlos auch auf 2xInt64 für einen Int128 umstellen.



Im Prinzip dividiert man erst den oberen Int64 durch 10, speichert darin wieder den Wert,
nimmt den Rest mit in den unteren Int64 und dividiert ebenfalls durch 10 und speichert.
Davon wieder der Rest nimmt man und speichert ihn im String, von rechts nach Links.
Und so bekommt man Stück für Stück den großen Dezimalstring.

Man kann auch einfach mit 4 Integern oder 8 Words oder 16 Bytes speichern/rechnen
und natürlich auch durch 100, 1000, 10000 oder so ... das dann natürlich jeweils mit führenden Nullen gefüllt und die Zahlenblöcke in den Dezimalstring kopiert.
(z.B. bei Byte durch 10, bei Word durch 1000 oder bei LargeWord/Integer durch 100000000, sowie unter 32 Bit würde ich mit Word und unter 64 Bit mit LongWord rechnen, um keine Überläufe in nativen Typen für die CPU zu haben).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Dez 2021 um 12:45 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz