3 Buchstaben zu einer Zahl zusammenfügen
-
Ich muss 3 Buchstaben zu einer Zahl zusammenbasteln, hab aber keine Ahnung wie das gehen soll... Bsp:
A B Z 01 02 26 Zahl: 010226Meine Fragen sind jetzt, wie ich die Zahlen die den Buchstaben zugeordnet sind (inkl den Nullen :/) in ein einziges long packen kann. Kurze Erklärung wäre net, geht doch bestimmt über irgendwelches Shifting Zeug oder so

-
buchstabe[2] + buchstabe[1]*100 + buchstabe[0]*100000
(dabei liegen die buchstaben schon als 1 .. 26 vor. Falls nicht, musst du erst sowas wie buchstabe - 'A' + 1 machen)
-
MasterCounter schrieb:
...geht doch bestimmt über irgendwelches Shifting Zeug oder so

Mit Sicherheit nicht, da mit 2er Potenzen und nicht mit 10er Potenzen gearbeitet wird. Es sei den, die Zahlen in deinem Beispiel sind Hexadezimale Zahlen, aber dars sieht man der Aufgabenstellung nicht an.
-
Sehr schön
Hätte man auch draufkommen können... Aber nur jetzt gibts ein Problem, wenn der erste Buchstabe<10 ist, bekommt man keine 0 davor... Hat man 3 Buchstaben hat die Zahl also nur 5 Stellen, statt die erwarteten 6, lässt sich das auch noch lösen? 
A B Z 1 2 26 erhaltene Zahl: 10226 erwartete Zahl: 010226Meine Umsetzung:
int j; j=0; for(int i=0;i<=textlen;i+=3) tnum[j]=(text[i+2]-'A'+1)+(text[i+1]-'A'+1)*100+(text[i]-'A'+1)*10000;EDIT: Man braucht ausserdem eine Null weniger beim ersten Buchstaben
10000 statt 100000
-
Zahlen haben keine führenden Nullen, das ist eine Frage der Zahlendarstellung.
-
Das Problem ist dann aber nicht die Zahl an sich, sondern die Ausgabe der Zahl

Wenn zahl/10000 < 10 ist, häng vor den Ausgabe-String noch eine 0 dran.e: späääääääät

-
Hat sich erledigt. Wenn ich mit der Zahl weiter rechne, fällt die im Beispiel angeführte führende 0 ja nicht ins Gewicht, da sie sich nicht auf die Rechnung auswirkt... Vielen Dank an Euch zwei!
