Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - bitdarstellung
bucas - Mi 12.01.11 13:07
Titel: bitdarstellung
Hallo,
ich möchte die Bitdarstellung einer Integerzahl in einem String speichern? wie geht das?
Moderiert von
Narses: Topic aus Multimedia / Grafik verschoben am Mi 12.01.2011 um 14:14
Bergmann89 - Mi 12.01.11 13:37
Hey,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function IntToBit(int: Integer): String; var i: Integer; begin SetLength(result, 32); for i := 0 to 31 do begin if (int and 1) = 0 then result[32-i] := '0' else result[32-i] := '1'; int := int shr 1; end; end; |
MfG Bergmann.
spacemanspiff - Mi 12.01.11 13:39
Also ich kenne nur die "normalen Wege zu Fuss"...
... bitweise Und-Verknüpfung und nachsehen, ob Wert größer 0... Ja: 1 zu String hinzufügen, 0 sonst
...oder...
... Wert immer um 1 nach rechts shiften und schauen ob Wert gerade oder ungerade ist... Gerade: 1 zu String hinzufügen, 0 sonst
so sollte das klappen... wenn man eine Programmiersprache kennt. Ob es vielleicht schon was unterstützendes in Delphi gibt, kann Dir vielleicht jemand anderes sagen.
Gruß,
Thomas
elundril - Mi 12.01.11 14:34
ich glaub bei Adventgewinnspiel von vor 2 Jahren oder von letztem Jahr war eine Aufgabe dabei die sowas beinhaltete. Und soweit ich mich erinnere, hat Benny das damals ziemlich effizient mit LookUp-Tabellen gelöst. Seine Lösung muss hier irgendwo im Forum noch herumschwirren.
lg elundril
Logikmensch - Do 13.01.11 07:11
Hallo,
ich benutze meist den folgenden Weg, wenn es kein Problem darstellt, dass im Stringergebnis auch binäre Zeichen enthalten sind (Delphi-Strings kommen damit gut zurecht):
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type integerstring=packed record case integer of 0:(i:integer); 1:(c:array[1..sizeof(integer)] of char); end; |
Jetzt kann man über TypeCast aus jeder Zahl einen String machen (und auch wieder rückkonvertieren, falls nötig:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var zahl:integer; zeichenkette:string; intstr:integerstring;
begin zahl := 65535; zeichenkette := 'Der Zahlenwert ist '+integerstring(zahl).c+' !'; intstr.c := #255#255#0#0; zeichenkette := 'Der Wert war: '+inttostr(intstr.i)+' !'; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!