Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Buchstaben in ihren binär wert zerlegen


Sqall - So 20.02.05 19:34
Titel: Buchstaben in ihren binär wert zerlegen
Hi

Kenn jemand von euch eine function oder ähnliches wo ich einen buchstaben als parameter übergeben kann und dieser mir den binär werd dieses buchstabens bzw zeichens gibt. Dieser müsste natürlich 8bit besitzen. Oder muss ich mir selber so etwas programmieren?


jasocul - So 20.02.05 19:36

Standardmäßig hat Delphi keine mir bekannte Funktion, die das kann.
Da wirst du wohl selbst drangehen müssen.


Anonymous - So 20.02.05 19:37

Als Parameter wodran und wofür? Und meinst du, du kannst auch ein wenig weniger 8) Rechtschreibfehler machen.


Sqall - So 20.02.05 19:53

Ich meine als parameter für die funktion xyz:

xyz(a) -> gibt 8stelligen binärwert zurück

Was denkst du denn was ich als parameter meine? Das was ein parameter ist. Also will ich im prinzip eine funktion wie chr oder ord.


Ich Bins - So 20.02.05 20:21

Ich kenne auch keine solche Funktion, d.h. du musst dir selber eine schreiben. Dazu brauchst du nur den Dezimalwert des jeweiligen Buchstabens (kriegt man über die Ascii-Tabelle raus), und dann nacheinander überprüfen ober die Zahl größer als 128, der Rst größer als 64, 32 etc. ist


AXMD - So 20.02.05 20:33

Die Funktion Ord ist zu "Ich Bins"' Aussage ein heißer Tipp ;)

AXMD


BenBE - So 20.02.05 20:35

Siehe http://cvs.sourceforge.net/viewcvs.py/omorphia/omorphia/include/OIncProcs.pas bei Funktion ByteToBinary. Aufruf z.B.:


Delphi-Quelltext
1:
2:
var C: Char;
Str := ByteToBinary(Ord(C));


Anonymous - Mo 21.02.05 17:40

Ich hab an Parameter wie z.B. STARTPARAMETER gedacht :)


uall@ogc - Mo 21.02.05 17:49

paramstr / paramcount und dann BenBes methode


delfiphan - Di 22.02.05 00:49

Weniger effizient als die Funktion in der Unit weiter oben, aber hiermit kannst du ne beliebige Basis wählen. Binär, Oktal, Hex, ...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function chgbase(a : cardinal) : string;
const
 Base = 2;
var
 b : byte;
begin
 Result := '';
 repeat
  b := a mod Base;
  if (Base>9and (b>9then
   inc(b, byte('A')-byte('0')-10);
  Result := char(byte('0')+b) + Result;
  a := a div Base;
 until a=0;
end;

In deinem Fall beispielsweise mit chgbase(ord('A'))