Hill Verschlüsselung

Status
Nicht offen für weitere Antworten.

Speedy85

Mitglied
Hallo,

ich programmiere zurzeit die Hill Verschlüsselung, habe aber ein kleines problem das ich alleine nicht überwinden kann. Undzwar möchte ich die ergebnisse (Zahlen) in Buchstaben umwandeln, also wenn ich z.B. erg=0 soll ein 'A' , erg= 5 soll ein 'F' ausgegeben werden. Aber auch wenn es drüber kommt, also z.B. erg= 26 dann wieder ein 'A'.

Mit diesem Code:

Scanner scan = new Scanner(System.in);
String text = scan.next();

char[] textAsCharArray = text.toCharArray();
int[] textAsIntArray = new int[textAsCharArray.length];

for(int i=0;i<textAsCharArray.length;++i){
textAsIntArray = textAsCharArray-'a';
}

konnte ich die Buchstaben in zahlen umwandeln um sie zu verarbeiten, aber Sie wieder zu buchstaben umzuwandeln bekomme ich leider nicht hin. Könnte mir jemand bitte helfen

Viele Grüße
 
wo liegt das problem? du musst doch nur das was du gemacht um die buchstaben in zahlen umzuwandeln wieder rückgängig machen (kleiner tipp: textAsCharArray-'a')
damit es ab 26 wieder von vorne beginnt kannst du modulo verwenden also:
Java:
textAsIntArray[i]=textAsIntArray[i]%26;
 
Danke für die schnellen Antworten, aber ich habe es glaube ich falsch intepretiert. Ich will von dem Code int erg;
auf einen buchstaben kommen, also zb. int erg=26; zu char charerg='A'; umwandeln.
 
Zuletzt bearbeitet:
Genau das wird in den Code-Beispielen meiner Vorredner getan. Du weisst ja, dass char im Prinzip nichts anderes ist als int oder?

D.h.:

Java:
char c = 65;
System.out.println(c); // druckt 'a'

siehe ASCII-Tabelle. Wenn du jetzt halt nicht bei 'a' anfangen willst sondern bei 'A' musst du in der Tabelle schauen welchen Wert das große 'A' dort hat (Ich glaube 123 oder sowas)
 
65 ist das große A 😉
erst kommen Großbuchstaben, dann Kleinbuchstaben, habe ich extra nochmal nachgesehen.
 
ich will es aber nicht nach dem ASCII Code, 0 soll in meinem Programm A sein und 1=B ... klein groß buchstaben sind da egal.
 
Deswegen ja auch + 65 an jede Zahl anhängen.

Damit bekommst du aus 0 => 0 + 65 = 65 = 'A' usw
 
wenn ich es so mache char c = zahl % 26 + 65; , dann gibt mir der compiler folgenden Fehler aus:
possible loss of precision
 
Java:
int zahl = 26;
		char c = (char) (zahl%26 + 65);
		System.out.println(c);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben