![]() |
erklärt mir bitte ein programm
hallo leute!
ich hab irgendwo im wieten web ein delphi code gefunden der eine bin in dec umwandelt
Delphi-Quellcode:
bis zu dem for i:=1 to length(s) do versteh ich ja alles (was ja nix ist) aber dann versteh ich gar nix mehr
unction BinToDec(s:string):int64;
var p:int64; i:integer; begin p:=0; for i:=1 to length(s) do p:=p*2+ord(s[i])-ord('0');//s[i] must be '0' or '1' result:=p; end; ich hab rausgefundne: The Ord function returns an integer value for any ordinal type Arg. It is principally used to convert characters or enumerations into their numeric equivalents. aber ich versteh da nur bahnhof... :wiejetzt: bitte helft mir... |
Re: erklärt mir bitte ein programm
er geht die kompletten buchstaben des textes durch (das ist die for schleife) und gibt dann jeweils die zahl wieder (das sit das ord)
mfg |
Re: erklärt mir bitte ein programm
Zitat:
|
Re: erklärt mir bitte ein programm
Herzlich willkommen in der DP, a3rosol! :dp:
Das ist auch nicht ganz einfach. Wenn du ord auf ein einzelnes Zeichen anwendest, erhältst du die entsprechende Nummer im ASCII-Code. Da die Ziffern im ASCII-Code alle hintereinander sind, gibt Ord('5')-Ord('0') z.B. 5 zurück. Damit sollte dir eigentlich die Entschlüsselung des Textes gelingen. |
Re: erklärt mir bitte ein programm
tut mir leid aber ich versteh immer noch nix...
leigt wahrscheinlich daran dass ich zu doof bin... gibt es eine einfachere möglichkeit das problem zu lösen? |
Re: erklärt mir bitte ein programm
ich glaube du hast weisst immmer noch nicht was ord macht ne, dann schau dir mal die seite hier :
![]() mfg |
Re: erklärt mir bitte ein programm
Für dich ganz langsam:
Binäre Zahlen werden so dargesetellt: Wertigkeit: 4 2 1 Ziffer 0: 0 0 0 Ziffer 1: 0 0 1 Ziffer 2: 0 1 0 Ziffer 3: 0 1 1 Ziffer 4: 1 0 0 Ziffer 5: 1 0 1 Ziffer 6: 1 1 0 Ziffer 7: 1 1 1 Vielleicht kannst du nun den Code nachvollziehen? |
Re: erklärt mir bitte ein programm
Das Zeichen '0' hat im ASCII-Code den Wert 48, '1' den Wert 49 (wenn ich nicht irre, habe nicht nachgesehen). Durch Subtraktion kann also nur 0 oder 1 (als Zahl) dabei herauskommen. Was die Funktion tut, ist, einen String, der nur aus '0' und '1' besteht, binär wieder in eine Zahl zu wandeln. Schauen wir uns das mal mit der Beispielzahl 5 an (binär 101):
Der String lautet also '101', p ist initial 0. Erster Durchlauf:
Delphi-Quellcode:
Zahl ist nun 1 (=> 0*2 + 1)
P := P*2 + (49 - 48)
Zweiter Durchlauf:
Delphi-Quellcode:
Zahl ist nun 2 (=> 1*2 + 0)
P := P*2 + (48 - 48)
Dritter Durchlauf:
Delphi-Quellcode:
Zahl ist nun 5 (=> 2*2 + 1)
P := P*2 + (49 - 48)
Da der String nur 3 Zeichen hatte, sind wir nun fertig. Weiteres zur binären Logik findest Du ![]() |
Re: erklärt mir bitte ein programm
ah^^ danke du netter mensch aus schweina :-D nun hab ichs kapiert
|
Re: erklärt mir bitte ein programm
Wenn der Autor das etwas anders formuliert hätte, wäre es einfacher zu verstehen gewesen:
Delphi-Quellcode:
geändert in
p:=p*2+ord(s[i])-ord('0');
Delphi-Quellcode:
So wird es IMHO deutlicher ;)
p := p shl 1 or (ord(s[i])-ord('0'));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz