# Dezimal zu Hexadezimal



## III (9. Februar 2004)

Hallo

Wie kann ich auf eine simple Art und Weise dezimale Zahlen von meinem Programm in Hexadezimale Zahlen umwandeln lassen?

Danke


----------



## Grimreaper (9. Februar 2004)

Mit der Anweisung Hex(x).

mfg Grimreaper


----------



## III (9. Februar 2004)

Danke, funktioniert wunderbar.

Und wie war das mit  dem Oktalen System?

Wie wandle ich Hexadezimale Zahlen in oktale um?

Gruß III


----------



## ZockDom (29. Februar 2004)

Ich hab' dafür 'nen Code geschrieben:


```
Function Zahlensys(Basis1 As Byte, Basis2 As Byte, Zahl1 As String) As String
 Dim Num As Long
 'Zahl1 -> Dezimal
 For X = Len(Zahl1) To 1 Step -1
  Select Case Mid$(Zahl1, X, 1)
  Case Chr$(48) To Chr$(57)
   Num = Num + (Basis1 ^ (Len(Zahl1) - X)) * Val(Mid$(Zahl1, X, 1))
  Case Chr$(65) To Chr$(89)
   Num = Num + (Basis1 ^ (Len(Zahl1) - X)) * (Asc(Mid$(Zahl1, X, 1)) - 54)
  End Select
 Next X
 
 'Dezimal -> Basis2
 'Bestimmung der Stellenanzahl des Ergebnises
 Dim N As Integer
 N = 0
 Do
  N = N + 1
  If Num / (Basis2 ^ N) < 1 Then Exit Do
 Loop
 'Berechnung des Ergebnisses
 Dim E As String
 E = ""
 For X = N To 1 Step -1
  E = E + Ziffer(Fix(Num / (Basis2 ^ (X - 1))))
  Num = Num - (Fix(Num / (Basis2 ^ (X - 1)))) * (Basis2 ^ (X - 1))
 Next X
 Zahlensys = E
End Function

Function Ziffer(Nr As Integer) As String
 If Nr < 10 Then
  Ziffer = Trim$(Str$(Nr))
 Else
  Ziffer = Chr$(Nr + 55)
 End If
End Function
```

Zum Umrechnen z.B. Binär zu Hexadezimal einfach:
Ergebnis$ = Zahlensys 2,16,"1101001"
Für Hexadezimal in Oktal (ganz klar) einfach:
Ergebnis$ = Zahlensys 16,8,"FF"

Wichtig: Immer Die Zahl als String angeben.
Es funktioniert mit Zahlensystemen bis zur Basis 36.

Ich hoffe es  und ich habe keine Fehler übersehen.


----------



## III (5. März 2004)

Das ist aber ne Menge Code.

Ich hab das sehr viel schneller geschrieben. Trotzdem Danke.

Zu Oktal:


```
Public Function byte2okt(vv)
Dim b1, b2, b3

b1 = vv And &H7
b2 = (vv And &H38) / 8
b3 = (vv And &HC0) / &H40

byte2okt = Trim(Str(b3)) + Trim(Str(b2)) + Trim(Str(b1))
End Function
```

Zu Hexadezimal: (wird in Textdatei gespeichert)


```
For i = 0 To 255
    Print #1, Format(i, "000"), Format(Trim(Hex(i)), "00"), byte2okt(i)
Next i
```

Ich beschränke mich hier wie ihr seht auf 256 Zeichen.

Gruß III


----------

