AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integer zu Float umwandeln

Ein Thema von brushmate · begonnen am 16. Mär 2009 · letzter Beitrag vom 16. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
brushmate

Registriert seit: 19. Dez 2008
Ort: Kempen
20 Beiträge
 
Delphi 7 Personal
 
#1

Integer zu Float umwandeln

  Alt 16. Mär 2009, 19:36
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:
crypt := function TForm1.crypt(K: Integer): Extended;
begin
  crypt := power(K, e) mod N;
end ;
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 19:41
Zitat von brushmate:
Delphi-Quellcode:
crypt := function TForm1.crypt(K: Integer): Extended;
begin
Da ist wohl ein "crypt := " zu viel.

Zitat von brushmate:
  crypt := power(K, e) mod N;
mod ist eine Integerdivision, du hast aber als Rückgabewert einen Fließkommawert.

Zitat von brushmate:
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.
Das nutzt dir ja nichts, denn mod geht ja nur mit zwei Integerwerten.
Wie wäre es denn so:
Delphi-Quellcode:
function TForm1.Crypt(K: Integer): Extended;
begin
  Result := Power(K, e) / N;
end ;
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.)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#3

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 19:54
Zitat von jaenicke:
Delphi-Quellcode:
function TForm1.Crypt(K: Integer): Extended;
begin
  Result := Power(K, e) / N;
end ;
mhm das ist ja nicht gerade der Sinn von Mod^^ und den braucht man ja bei RSA

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:
while a>=b do
a:=a-b;
r:=a;
bzw

Delphi-Quellcode:
asm
mov ax,a
@anfang_schleife: cmp ax,b
jl @ausgabe
sub ax,b
jmp @anfang_schleife
@ausgabe: mov c,ax
end;
MfG blink182
  Mit Zitat antworten Zitat
brushmate

Registriert seit: 19. Dez 2008
Ort: Kempen
20 Beiträge
 
Delphi 7 Personal
 
#4

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 19:56
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...
  Mit Zitat antworten Zitat
brushmate

Registriert seit: 19. Dez 2008
Ort: Kempen
20 Beiträge
 
Delphi 7 Personal
 
#5

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 19:59
hab ich das jetzt richtig verstanden, dass der mod-Befehl nicht mit float-datentypen funktioniert oder liets an den unterschiedlichen datentypen extended und integer?
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 20:04
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.
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
brushmate

Registriert seit: 19. Dez 2008
Ort: Kempen
20 Beiträge
 
Delphi 7 Personal
 
#7

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 20:07
kann ich real denn auch mit extended verrechnen?
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#8

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 20:10
Zitat von DelphiHilfe:
Operator Operation Operandtyp Ergebnistyp Beispiel
mod Rest Integer Integer Y mod 6

Der Operator mod liefert den Rest, der sich bei der Division seiner Operanden ergibt. Das bedeutet: x mod y = x – (x div y) * y.

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
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 20:12
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)
Angehängte Dateien
Dateityp: rar datatypes_211.rar (176,0 KB, 13x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
brushmate

Registriert seit: 19. Dez 2008
Ort: Kempen
20 Beiträge
 
Delphi 7 Personal
 
#10

Re: Integer zu Float umwandeln

  Alt 16. Mär 2009, 20:15
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz