Hi,
Ich bräucht ne Funktion so ähnlich wie Hex(), also eine die Dezimalzahlen in ein anderes Zahlensystem umwandelt.
Hät jemand ne Idee wie des gehen könnte?
Vielleicht irgendwie mit _HextoString oder sowas.
Hi,
Ich bräucht ne Funktion so ähnlich wie Hex(), also eine die Dezimalzahlen in ein anderes Zahlensystem umwandelt.
Hät jemand ne Idee wie des gehen könnte?
Vielleicht irgendwie mit _HextoString oder sowas.
Was soll den denn werden? Binär, Okt, Hex, ...?
Mega
Hab ich das richtig verstanden?
Dezi- zu Hexadezimalsystem?
Das würde ich mit ner rekursiven Funktion machen...
Ne n andres System 64 oder sowas.
Also sowas Wie 0123456789ABCDEFG...
danke für die schnelle antwort
Wozu? Was soll es denn werden wenn es fertig ist?
Also, hierhab ich das mal als Funtion umgesetzt.
( hab ich von http://www.vbarchiv.net/tipps/details.php?id=1590 erweitert)
MsgBox(0, '', _TranslateSystem("FF",16,10))
[/autoit] [autoit][/autoit] [autoit];===============================================================================
;
; Function Name: _TranslateSystem
; Description:: Wandelt eine Zahl zwischen verschiedenen Zahlensystemen um.
; Parameter(s): $zahl - Die Zahl zum Umwandeln
; $OldSystem - [Optional] Das alte System (Default: 10)
; $NewSystem - [Optional] Das neue System (Default: 2)
; Requirement(s):
; Return Value(s): Success: Number in new format and @extended set to SystemBase
; Error: -1.#NAN or -1.#IND
; @error set to:
; 1 - Zahl nicht richtig formatiert
; 2 - neues System nicht im darstellbaren Bereich
; 3 - altes System nicht im darstellbaren Bereich
; 4 - Zahl enthält Zeichen, die nicht im System vorkommen
; Author(s): Prog@ndy; sd (VB-Code)
; Notes: Es können Zahlensysteme mit Basis von 2 bis 62 verwendet werden.
; Bei Systemen bis Basis 36 sind die Buchstaben nicht Case Sensitiv (a-z = A_Z = 10-35)
; Bei Systemen von 37 bis 62 sind die Buchstaben zur Darstellung des größeren Bereichs Case-sensitive
; (Die Buchstaben entsprechen dann: a-z = 10-35 und A-Z = 36-61)
; VB source used from http://www.vbarchiv.net/tipps/details.php?id=1590
;
;===============================================================================
;
Func _TranslateSystem($zahl, $OldSystem=10, $NewSystem = 2)
Local $out ;' Ausgabevariable
Local $temp ;' Temporäre Variable
$OldSystem = Int($OldSystem)
$NewSystem = Int($NewSystem)
Select
Case Not StringRegExp($zahl,"\A[0-9a-zA-Z]+\Z")
Return SetError(2,0,"-1.#NAN")
Case $NewSystem < 2 Or $NewSystem > 62
Return SetError(2,0,"-1.#IND")
Case $OldSystem < 2 Or $OldSystem > 62
Return SetError(3,0,"-1.#IND")
EndSelect
;' Zeichen der Zahlensysteme ( bis Hexadezimalsystem )
Local $chrsys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
If $OldSystem <> 10 Then
Local $CaseSense = ($OldSystem > 36)
Local $ziffern = StringSplit($zahl,""), $nummer
$zahl = 0
For $i = 1 To $ziffern[0]
$nummer = StringInStr($chrsys,$ziffern[$i],$CaseSense,1)
If $nummer > 0 Then $zahl += ($nummer-1)*($OldSystem^($ziffern[0]-$i))
If $nummer > $OldSystem Then Return SetError(4,0,"1.#NAN")
Next
EndIf
;' Solange bis Zahl = 0
While $zahl <> 0
;' Stelle der Zahl ermitteln
$temp = Mod($zahl, $NewSystem )
;' Zahl anhängen
$out = StringMid($chrsys, $temp + 1, 1) & $out
;' Integerdivision
$zahl = Int($zahl / $NewSystem)
Wend
SetExtended($NewSystem)
Return $out
EndFunc
Vielen Dank für die schnellen Antworten