Benutzerdefinierte Umrechnung von Zahlensysthemen (2)
- Erstellt am Montag, 17. Juni 2013 21:18
In einer unbesetzten Zeit entstanden folgende Funktionen, die eine Umrechnung in zahlreiche Zahlensysteme mit natürlicher Basis ermöglichen und einige der Größenrestriktionen schwächer formulieren.
Gerne freue ich mich über Anregungen, Verbesserungsvorschläge oder einfach nur über eine Rückmeldung.
1. DEC2X
Die Funktion DEC2X wandelt ausgehend vom Dezimalsystem eine Zahl z in ein Zahlensystem mit natürlicher Basis n um. Während üblicherweise auf eine Subtraktion zur Bestimmung der jeweiligen Restzahl zurückgegriffen wird, geschieht dies hier anhand der Gleichung q, wobei sich die Anzahl der Schleifendurchläufe durch die Gleichung k ergibt. Dieses Verfahren ist äquivalent zu der Subtraktionsmethode.
Function DEC2X(z As Long, n As Long) As String
Dim j As Integer
Dim k As Integer
Dim q As Integer
Dim r As String
If IsNumeric(z) And IsNumeric(n) Then
k = Int(Evaluate(Log(z) / Log(n))) + 1
For j = 1 To k
q = Int(z / n ^ (j - 1)) Mod n
If q > 9 Then
r = Chr(q + 55) & r
Else
r = q & r
End If
Next j
DEC2X = r
Else
DEC2X = "#NV"
End If
End Function
2. X2DEC
Demgegenüber wandelt die Funktion X2DEC von einem Zahlensystem mit natürlicher Basis n eine (alpha-)numerische Zahl z in das Dezimalsystem um.
Function X2DEC(z As String, n As Long) As Long
Dim j As Long
Dim r As Long
If IsNumeric(n) Then
For j = 1 To Len(z)
If Asc(Mid(z, j, 1)) > 64 Then
r = r + n ^ (Len(z) - j) * _
(Asc(Mid(z, j, 1)) - 55)
Else
r = r + n ^ (Len(z) - j) * CLng(Mid(z, j, 1))
End If
Next j
X2DEC = r
Else
X2DEC = "#NV"
End If
End Function