Code archives/Algorithms/Base Converter
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| The name is program. Additionally ther's a function to check out the base of a number by often used sings (ex. 0x for hexadecimal numbers). If you see the example you will understand it. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Der Name ist Programm. Zusätzlich gibt es eine Funktion um die Basis einer Zahl anhand häufig genutzter Zeichen (z.B. 0x für hexadezimale Zahlen) herauszufinden. Wenn du die Beispiele siehst, wirst du es verstehen. | |||||
Const BaseCharset$ = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
; Base Converter by Diego Semmler
; www.dsemmler.de
; Leider funktioniert der Zahlenumwandler z.Z. nur im Bereich 0 bis unter 2^31
; I'm sorry the base converter works currently ony between 0 and less 2^31
; Beispiel | Example
Print ConvertBase$("4311", 5, 14)
Print ConvertNumber$("0xFF")
WaitKey
Function ConvertNumber$(Number$)
If Left(Number$, 2) = "0x" Then ; Hexadezimale Zahl | Hexadecimal number
Base% = 16
Number$ = Mid(Number$, 3, 8)
EndIf
If Left(Number$, 1) = "#" Then
Base% = 16
Number$ = Mid(Number$, 2, 8)
EndIf
If Left(Number$, 1) = "0" Then ; Oktalzahl | Octal number
Base% = 8
Number$ = Mid(Number$, 2, 11)
EndIf
If Base% <> 0 Then Number$ = ConvertBase(Number$, Base%, 10)
Return Number$
End Function
Function ConvertBase$(Number$, FromBase%, ToBase%)
If FromBase% < 2 Or FromBase% > 36 Or ToBase% < 2 Or ToBase% > 36 Return Number$ ; Falsche Basis | Wrong Base
For I% = 1 To Len(Number$) ; Wandle Zahl in Integer um | Convert number to integer
Val% = Instr(BaseCharset$, Mid(Number$, I%, 1)) - 2
If Val% < 0 Or Val% >= FromBase% Then Exit ; Falsches Zeichen - Aktion wird abgebrochen | Wrong character - action will be aborted
Buffer% = Buffer% + Val% * FromBase% ^ (Len(Number$) - I%)
Next
If Buffer% < 0 Return Number$
Number$ = ""
Repeat ; Wandle Integer in Zahl um | Convert integer to number
Val% = Buffer% Mod ToBase%
Buffer% = Floor(Buffer% / ToBase%)
Number$ = Mid(BaseCharset$, Val% + 2, 1) + Number$
Until Buffer% <= 0
Return Number$
End Function |
Comments
None.
Code Archives Forum