Zahlen in Buchstabenkombiantionen konvertieren

05/01/2010 - 19:35 von Peter Gast | Report spam
Hallo,
ich beiße mir im Moment die Zàhne an einem vermutlich kleinen Problem. Ich
möchte ganzzahlige Werte folgendermaßen in Buchstabenkombinationen
umwandeln. Letzlich ist das wohl eine Dezimal-Basis26-Wandlung.

1 = a
26 = z
27 = aa
52 = az
676 = zz usw.

ich denke, das hier eine rekursive Funktion sinnvoll eingesetzt werden
sollte, den groben Wandlungskonstrukt habe ich funktionsfàhig hingekriegt,
aber ich habe gerade eine Denkblokade um das verallgemeinert hinzukriegen.

merke = Math.Log(zahl) / Math.Log(26)

merke = merke - Math.Truncate(merke)

merke = Math.Round(26 ^ merke, 0)

If Math.Log(zahl) / Math.Log(26) = 1 Then merke = 26

result = Chr(96 + merke)


hat jemand zufàllig ein solches Problemchen schon mal gelöst?

Dank Peter
 

Lesen sie die antworten

#1 Karsten Sosna
08/01/2010 - 08:28 | Warnen spam
ich beiße mir im Moment die Zàhne an einem vermutlich kleinen Problem. Ich
möchte ganzzahlige Werte folgendermaßen in Buchstabenkombinationen
umwandeln. Letzlich ist das wohl eine Dezimal-Basis26-Wandlung.

1 = a
26 = z
27 = aa
52 = az
676 = zz usw.

ich denke, das hier eine rekursive Funktion sinnvoll eingesetzt werden
sollte, den groben Wandlungskonstrukt habe ich funktionsfàhig hingekriegt,
aber ich habe gerade eine Denkblokade um das verallgemeinert hinzukriegen.



Hallo Peter,
Deine Denkblockade liegt an Deiner Definition. Eigentlich brauchst Du so
etwas wie ein "Dezimal-Basis26-Wandlung.", jedoch passt Dein Wertebereich
nicht dazu(a = 1; z &). Wo ist die "0". Entweder definierst Du a= 0 und z
= 25 oder Du bleibst bei a =1 ; z = 26 und fügst die Null hinzu, damit wàre
es aber eine Dezimal-Basis27!!!!!!!!-Wandlung. Schaust Du hier
0 1 2 3 4 5 6 7 8 9 >> 10 Werte Basis
0 1 2 3 4 5 6 7 8 9 A B C D E F >> 16 Werte Basis
Beide Systeme beinhalten also die "0" und die fehlt bei Dir!!! Deswegen kann
das eigentlich nicht stimmen:

27 = aa


Wàre "bb", wenn a = 0, b = 1...
1 * 26^1+ 1 * 26^0 = 27
52 = az


Wàre "ca", wenn a = 0, b = 1...
2 * 26^1+ 0 * 26^0 = 52
Gruß Scotty

Ähnliche fragen