AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Algorithmen Delphi Und noch eine Variante zur Konvertierung von Zahlensystemen
Thema durchsuchen
Ansicht
Themen-Optionen

Und noch eine Variante zur Konvertierung von Zahlensystemen

Ein Thema von Maddin1 · begonnen am 8. Nov 2007
Antwort Antwort
Maddin1
(Gast)

n/a Beiträge
 
#1

Und noch eine Variante zur Konvertierung von Zahlensystemen

  Alt 8. Nov 2007, 18:06
Also, hier noch eine Möglichkeit unter Zahlensysteme zu de-/konvertieren.

Zunächst jedoch braucht man eine Funktion zur Berechnung von Potenzen:

Delphi-Quellcode:
function Potenz(basis : byte; exp : byte) : longint;
var z : longint; //Speicherung von Zwischenergebnissen
    i : byte; //Zählvariable für die Schleife
Begin
 z:=1;
 for i:=1 to exp do z:=z*basis;
 Potenz:=z;
End;
Nun zum Konvertieren aus dem Dezimalsystem in jedes andere bis Hexadezimal.
Der Parameter d ist die zu konvertierende Dezimalzahl
und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
procedure konvert(d : word;b : byte; var z: string);
var r : byte; //Rest der ganzzahligen Division
begin
 z:='';
 Repeat
  r := d mod b; //mod = Rest der ganzzahligen Division
  d := d div b; //div = ganzzahlige Division
  case r of
   10 : z:='A'+z;
   11 : z:='B'+z;
   12 : z:='C'+z;
   13 : z:='D'+z;
   14 : z:='E'+z;
   15 : z:='F'+z;
  else
  z:=chr(r+48)+z; end;

 Until d=0;
       end;
Die Rekonvertierung ist dann auch nicht mehr all zu viel^^.
Der Parameter z ist wieder die zu rekonvertierende Zahl(oder halt auch String) und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
function rekonvert (z : string; b : byte) : word;
var l : integer;
    I : byte;
    dz : word;
    ziffer : byte;
begin
l:= length (z);//Speichert die länge des Strings, sprich die Anzahl der Ziffern
 dz:=0;
 for I := 1 to l do begin
 //Umwandlung von ASCII-Zeichen in Zahlwerte
 case z[i] of
 '0'..'9' : ziffer:= ord(z[i])-48;
 'A'..'F' : ziffer:= ord(z[i])-55;
 end;
  dz:=dz + ziffer*Potenz (b,l-i);
 end;
 rekonvert:=dz;
end;
Es ist nun nicht von Bedeutung, dass konvert eine Prozedur ist und rekonvert eine Funktion.
Ich habe es nur zu Test-Zwecken umgeschrieben und es kann je nach Wunsch, wieder zurück geschrieben werden.
Ich hoffe ich konnte Euch helfen. Und in diesem Sinne, viel Spass^^
  Mit Zitat antworten Zitat
Antwort Antwort

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 09:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz