![]() |
Integer zu Float umwandeln
Hallo,
ich muss gerade für meine facharbeit die RSA-Verschlüsselung programmieren. Ich muss irgend wann die Formel C = K^e mod N berechnen. Das habe ich folgendermaßen implementiert:
Delphi-Quellcode:
die power-Funktion gibt allerdings den Extended-Datentyp zurück, N ist aber Integer. Bisher habe ich nichts gefunden, wie ich N in Extended umwandeln kann.
crypt := function TForm1.crypt(K: Integer): Extended;
begin crypt := power(K, e) mod N; end ; |
Re: Integer zu Float umwandeln
Zitat:
Zitat:
Zitat:
Wie wäre es denn so:
Delphi-Quellcode:
Den Rückgabewert legt man normalerweise in Result, deine Schreibweise ist zwar möglich, aber wenig sinnvoll. (Sonst musst du z.B. bei einer Umbenennung der Funktion auch jede Zuweisung umbenennen und lesbar ist das auch nicht so gut.)
function TForm1.Crypt(K: Integer): Extended;
begin Result := Power(K, e) / N; end ; |
Re: Integer zu Float umwandeln
Zitat:
also was nicht schön ist aber Round oder Trunc (Abrunden) funktionieren, aber ggf. kannst du dir ja auch eine "mod"-funktion selber schreiben, die mit extended funktioniert r:=a mod b
Delphi-Quellcode:
bzw
while a>=b do
a:=a-b; r:=a;
Delphi-Quellcode:
MfG blink182
asm
mov ax,a @anfang_schleife: cmp ax,b jl @ausgabe sub ax,b jmp @anfang_schleife @ausgabe: mov c,ax end; |
Re: Integer zu Float umwandeln
Hi,
ich wollte zuerst nur den crypt := (K^e)...Teil posten, deshalb war eins zuviel. Wenn ich K^e / N rechnen würde, würde ich doch etwas anderes erhalten ald mit mod. Ich hab mal probiert den integer erst in string und den dann in float umzuwandel, funktioniert aber auch nicht... |
Re: Integer zu Float umwandeln
hab ich das jetzt richtig verstanden, dass der mod-Befehl nicht mit float-datentypen funktioniert oder liets an den unterschiedlichen datentypen extended und integer?
|
Re: Integer zu Float umwandeln
Hm, also wenn du deine Variablen als Real definierst, sollte die Umwandlung von Integer zu Real kein Problem sein, da Real einen größeren Zahlenbereich abdeckt als Integer. Also müsstest du das Ergebnis, was dir dein Modulo liefert einfach einer Real Variablen zuweisen können.
|
Re: Integer zu Float umwandeln
kann ich real denn auch mit extended verrechnen?
|
Re: Integer zu Float umwandeln
Zitat:
schreibs halt einfach um, ja und mod funktioniert nur mit integer und power liefert extented ja kannst du , da es ja beide gleitkommazahlen sind aber extended ist größer als real ;) extened -> 3.4*10^-4932 bis 1.1*10^4932 und real ist da "bisschen" weniger 2.9*10^-39 bis 1.7*10^38 |
Re: Integer zu Float umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
Ups, blink182 hat natürlich recht, extended is viel größer als real! Aber trotzdem: Ich seh das Problem einfach nicht, also einer Real bzw. Extended Variablen kann man doch ohne weiteres ein Intergerwert zuweisen oder? (siehe Anhang)
|
Re: Integer zu Float umwandeln
hab ich auch grad in der hilfe gelesen...
also es gibt jetzt keine möglichkeit integer direkt in extended umzuwandeln und ich muss mir jetzt selber das modulo basteln? hatte das grad mal versucht aber da muss ja auch wieder ein extended wert und ein integer wert rein und dann krieg ich wieder einen fehler...
Delphi-Quellcode:
function modulo(m: Extended, n: Integer): Integer;
begin while m >= n do begin m := m - n; result := m; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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