Autor Beitrag
sebastianf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 08.11.02 13:01 
HAllo !

ich habe folgendes Problem, das mir die Suchefunktion des Forum und der EDH2000 nicht lösen konnten :?

Ich habe einen String (8 Stellen), der Binärdaten enthält.
[z.B. 01001101 oder so]

.. diesen möchte ich nun in den richtigen Dezimal , Binär u.o. Hexadezimal Wert umrechnen.
Ich würde mich freuen, wenn mir jemand ein wenig auf die Sprünge helfen könnte.

Viele Grüße,
Sebastian
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 08.11.02 13:22 
Hi
Wenn du Delphi 6 verwendest, steht dir BinToHex zur Verfügung um aus dem Binärstring einen Hexstring zu erzeugen. Aus dem HexString kannst du mit StrToInt('$' + HexString) den Integer erzeugen.

Wenn du ne andere Delphi Version hast, sollte das ein brauchbarer und ausbaufähiger Ansatz sein:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function BinToInt(Text: string): integer;
var
   i  : Integer;
   wert: cardinal;
begin
   i := Length(Text);
   wert := 1;
   Result := 0;
   if  i <= 16 then
     while i > 0 do begin
       if  Text[i] = '1' then
           Result := Result + wert;
           Dec(i);
           wert := wert shl 1;
       end
   else
       Result := -1;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
SteaLth
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 08.11.02 13:31 
den String mittels StrToBCD in eine Binärzahl umwandeln und diese dann mittels BCDToInteger in dezimal umwandeln.

Schau einfachmal in der OH nach StrTo..., HexTo..., IntTo... und BCDTo... usw.

_________________
MfG SteaLth
Programmieren ist Arbeit.
sebastianf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Fr 08.11.02 14:24 
Danke für eure Hilfe,
doch leider scheint Delphi 5 (nutze ich hier)
die Funktion StrToBDC nicht zu kennen - auch die OH gab dazu keine Info...

Ich probiers nochmal weiter, trotzdem
THANX :-)
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 08.11.02 18:15 
Du kannst es auch noch etwas umständlicher machen, ein Binärcode sieht ja zum Beispiel so aus :

00110101

Für jede stelle steht ja 0 2 4 8 16 32 64 128. So jetzt liest Du jede Stelle einzeln ein und dann merkst Du Dir die Stellen wo eine 1 stand und addierst dann die Zahlen zusammen. Damit hast Du auch eine Dezimalzahl aus dem Binärstring gewonnen.
SteaLth
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 08.11.02 18:42 
Andersrum wird n Schuh draus :) 128 64 32 16 8 4 2 1 also diese Zahlen aufsummieren wenn an der enstprechenden Stelle im Binärstring eine '1' steht. 00110101 ergibt also 32+16+4+1=53

_________________
MfG SteaLth
Programmieren ist Arbeit.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Fr 08.11.02 20:14 
Oh sorry, habe ich in die verkehrte Richtung gedacht, Du hast natürlich recht SteaLth. :oops:
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 08.11.02 21:18 
Hier eine Funktion die ich mal vor Jahren geschrieben habe. Bis jetzt hatte ich damit keine Probleme.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
uses ..., Math;

function BinToDec(Bin: String): Word;
var  r: Single; i: Byte;
begin
  r := 0;
  for i := 1 to Length(Bin) do case Bin[i] of '1': r := r + Power(2, (Length(Bin) - i)) end;
  Result := Trunc( r );
end; {Popov}


Beispiel:

ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage( IntToStr(BinToDec('0101010101010101')) );
end;


Die Länge des Binärstrings ist dabei egal und muß eventuell vorher gekürzt werden, d.h. wenn ich nur 6 Bit's interesieren, dann muß die Länge des Binärstrings 6 Zeichen lang sein.