Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: Produkt Aktivierung

  Alt 23. Mai 2004, 13:14
Beachten musst du dabei nur das der Int64 auch die entsprechende "Aufnahmegröße" für die gewählte Konvertierung ermöglicht. Bei Basis 36 ist die Rechnung vereinfacht so: 1 Ziffer benötigt 8 Bit, 64Bit / 8Bit = 8 Ziffern, 36^8 ~ 2821109907000 ist die größte kodierbare Zahl.
Will man mehr benötigt man einen binären Datentyp der mehr als 64Bit groß sein kann. Dazu kann man die BCD Routinen im Delphi 7 benutzen. Oder man wählt eine clevere Basis aus. Diese Basis sollte eine Potenz von 2 sein, also 4,8,16,32,64,128 da dadurch die Konvertierungen OHNE mathematische Berechnungen auskommen. Für die Basen bis 64 enthält das DEC schon fertige Konvertierungen die ganze binäre Arrays konvertieren können. Mögliche Konvertierungen wäre TStringFormat_Base64 oder TStringFormat_Base32. Nimmt man zb. die basis 64 so benötigen wir exakt 6 Bits um eine Base64 Ziffer darzustellen. Ein Array mit 32 Bytes = 256 Bits würde also in Base64 43 "Ziffern" benötigen. Mit der Basis 32 benötigten wir dann schon 52 "Ziffern". Der Vorteil ist aber das die Konvertierungen zu solchen Basen eben sequentiell ohne math. Berechnungen wie div/mod möglich wird.

Gruß Hagen
  Mit Zitat antworten Zitat