000
06.10.2006, 18:09 Uhr
~cfx
Gast
|
Hi, ich bin neu hier im Forum und ich habe ein Problem !
Wahrscheinlich werdet ihr mich jetzt alle mit irgendwelchem Quellcode zuballern, der das Problem behebt, aber leider habe ich keine bzw. sehr wenig Erfahrung mit modernen Programmiersprachen ! Da fragt man sich aber zurecht, was ich hier dann überhaupt will? Nun ja, ich hab schon Erfahrung, allerdings ... äh ... nicht am PC, sondern auf einem programmierbaren Taschenrechner. Wer jetzt denkt, sollte vielleicht doch wieder schnell runterkommen, denn die installierte Programmiersprache ist Basic-ähnlich, genauer: es ist Casio-Basic. Außerdem ist das eine allgemeine Programmierfrage.
Nun, ich will versuchen euch mein Problem genauestens zu schildern und auf die Einschränkungen des TR eingehen (Ist übrigens ein fx-9860G SD von Casio):
Ich plane schon seit längerem so eine Art Konsole dafür zu schreiben.
Da der TR leider keine String-Variablen unterstützt, habe ich jedem Buchstaben einen Wert zugeordnet. Angefangen bei A mit dem Wert 1, über B mit 2, C=3, D=4, ... ,Z=26 ... und noch ein paar Zahlen und Sonderzeichen. Jedes Zeichen bzw. Wert wird dann einzeln in ein Listenelement gespeichert. (Es können maximal nur 37 Zeichen eingegeben werden) Diese Listendaten codiere ich dann zu einem einzigen Wert und überprüfe ihn mit einer anderen Liste, in der bereits vorinstallierte Befehle stehen (bzw. die codierten Werte davon), ob ein solcher Befehl eingegeben wurde. Das Problem ist aber die Codierung !
Derzeit codiere ich so: (Hinweis: mit 'ax' ist der Listenindex gemeint [z. B.: steht in Index a1 der Wert 5, ist der Buchstabe 'E' hier abgespeichert]) a1+a2*100+a3*10000+... Eine kleine Optimierung des Ganzen wäre statt jeweils *100 zu rechnen, die maximale Anzahl an möglichen Zeichen zu verwenden. (Derzeit 72) a1+a2*72+a3*72^2+a4*72^3+...
Leider überschreitet bei beiden der codierte Wert 16 Stellen - das Maximum, womit der TR intern rechnet.
Vor einiger Zeit hab ich mich etwas über Hash-Verschlüsselung belesen; aus einem anderen Forum meinte man aber, dass das zu umständlich und zweckentfremdend sei. Vermutlich haben sie da auch Recht.
Was mich allerdings an einem Hash fasziniert hat, war dass er, egal wie auch die Eingabe war, immer einen festen, x-stelligen codierten Wert "ausspuckte". Jetzt suche ich nach einem Verschlüsselungsalgorithmus, der einen Wert von maximal 16 Stellen erzeugt und ich somit eine korrekte Wertüberprüfung machen kann ! Allerdings sollten keine Doppelbelegungen auftreten, sodass "Senf" nicht gleich "Soße" ist.
Tja, bei einem solchen Algorithmus konnte mir bislang aber keiner helfen und deswegen wollte ich mal hier bei den "Erfahreneren" nachfragen, wie man so was macht/machen könnte.
Btw, wenn das wirklich zu kompliziert sein sollte, könnte ich den codierten Wert auch einmal splitten - also zwei Werte überprüfen. Mehr gehen aber wirklich nicht, da dann 1. alles zu umständlich wird und 2. zu langsam. (Ein TR hat keine GHz ! )
Danke schon mal und man möge mir meine Ausdrucksweise verzeihen. |