Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hex to Dec und zurück für grosse Zahlen

Hex to Dec und zurück für grosse Zahlen
24.03.2015 16:54:57
Pepi
hallo zusammen
Ich muss grosse Zahlen von Hex nach Dec konvertieren
Habe hier ein Makro gefunden, das funktioniert.
Jetzt möchte ich auch von Dec nach Hex konvertieren
kann mir da jemand einen Code angeben
https://www.herber.de/bbs/user/96612.xlsm
vielen Dank
Pepi

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
24.03.2015 17:16:05
Nepumuk
Hallo,
dazu findest du hier: http://www.rendar.de/lzr.htm ein passendes Addin.
Gruß
Nepumuk

AW: Hex to Dec und zurück für grosse Zahlen
24.03.2015 17:24:48
Luschi
Hallo Pepi,
warum Vba, es gibt doch in Excel 2010 die Tabellenfunktionen
=DEZINHEX(..)
=HEXINDEZ(..)
Gruß von Luschi
aus klein-Paris
PS: in Vba gibt es diese Funktionen:
- WorksheetFunction.Dec2Bin(..)
- WorksheetFunction.Hex2Dec(..)

Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
24.03.2015 17:42:31
Daniel
Hi
um von Dec nach Hex zu konvertieren, kannst du folgendes verwenden:

Public Function DecToHex(ByVal Dec As Double) As String
Dim i As Long, j As Long
Dim x As Long
Const Hexziffer As String = "0123456789ABCDEF"
For i = 0 To 14
If 16 ^ i > Dec Then Exit For
Next
For j = i - 1 To 0 Step -1
x = Dec \ 16 ^ j
DecToHex = DecToHex & Mid$(Hexziffer, x + 1, 1)
Dec = Dec - x * 16 ^ j
Next
End Function
beachte jedoch, das Excel bei Double nur mit 15 Signifikanten Stellen rechnet.
Haben deine Zahlen mehr stellen, wird ab der 16. Stelle gerundet.
Gruß Daniel

Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
24.03.2015 18:42:38
fcs
Hallo Pepi,
bitte beachte, dass Excel nur 14 bis 15 sigifikante Ziffern bei Zahlen verwaltet. Man kann als bis etwa 10^14 halbwegs genau rechnen. Bei größen Zahlen wird gerundet. In deiner Beispieldatei erkennst du das daran, dass alle Dezimalzahl mit 00 enden.
Eine DecToHex-Function kann etwa wie folgt aussehen.
Gruß
Franz
Public Function DecToHexStr(Dec As Double) As String
Dim Rest As Double
Dim strHEX As String
Dim Nachkomma As Double
Dim Test As Long
Rest = Dec
Do
Nachkomma = (Rest / 16) - VBA.Fix(Rest / 16)
Test = Round(Nachkomma * 16, 0)
Select Case Test
Case 0 To 9: strHEX = Format(Test, "0") & strHEX
Case 10: strHEX = "A" & strHEX
Case 11: strHEX = "B" & strHEX
Case 12: strHEX = "C" & strHEX
Case 13: strHEX = "D" & strHEX
Case 14: strHEX = "E" & strHEX
Case 15: strHEX = "F" & strHEX
End Select
Rest = (Rest - Test) / 16
If Rest 

Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
25.03.2015 12:28:54
Pepi
Hallo Zusammen
Ganz lieben Dank für Eure grosse Hilfe
Ich habe mittlerweile zwei Codes gefunden mit denen ich zwischen Hex und Dec hin und herkonvertieren kann und das Resultat auch immer den gleichen Wert ergibt, doch aus dem Original-Hex-Wert 80335AF2586204 (14-stellig) entsteht der Dec-Code 36085262724915700 (17-stellig) und wieder zurück nach Hex 80335AF25861F0, also nur die ersten 11 Stellen stimmen überein. Beziehen sich die die 14 bis 15 Stellen auf den Hex oder Dez Code? - Ich hoffte, dass jemand einen Trick kennt, lange Werte zu konvertieren (vielleicht auch mit einem anderen Programm) - Leider habe ich die Erklärung von Luc nur der Spur nach verstanden. Auch mit dem Add-In habe ich Schwierigkeiten. (Runter geladen, Installiert - doch unter dem Ritter Addins erscheint es nicht! - Schade - liebe Grüsse Pepi

Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
25.03.2015 12:51:06
Nepumuk
Hallo,
unter dem Reiter Addins soll auch nichts erscheinen. Die Funktionen findest du in den Formeln. Also einfach das fx in der Bearbeitungsleiste anklicken und die entsprechende Funktion raussuchen.
Gruß
Nepumuk

AW: Hex to Dec und zurück für grosse Zahlen
25.03.2015 14:39:47
Pepi
Hallo Zusammen
Ihr seid aber hartnäckig - ist ja wie Ostern und Weihnachten zusammen - Bravo
Jetzt hat es geklappt mit dem ADD-IN und ich kann hin- und herkonvertieren und es stimmt
Herzlichen Dank Nepumuk
lb Grüsse Pepi

Anzeige
AW: Hex to Dec und zurück für grosse Zahlen
25.03.2015 14:30:40
fcs
Hallo Pepi,
die 14 bis 15 signifikanten Ziffern in Excel beziehen sich auf Dezimalzahlen.
Mit Excel-Bordmitteln und ohne jetzt in irgendwelche höheren Sphären der Zahlentheorie einzusteigen scheint in Excel bei Dezimalzahlen von 999.999.999.999.999 ((1*10^15) -1) Schluss zu sein für die Umwandlung in HEX-Zahlen. Die größte HEX-Zahl ist also 38D7EA4C67FFF
Die Exelfunktion DEZINHEX konvertiert Zahlen bis 549.755.813.887
Die HEXINDEZ-Funktion verarbeitte max. 10-stellige HEX-Zahlen.
Gruß
Franz

Anzeige
In VBA gibt's die Fkt Hex u.für Hexadezimale ...
25.03.2015 05:51:03
Luc:-?
…die Fkt CLng mit der mit führendem &h notierte HexadezimalZahlen in DezimalZahlen gewandelt wdn können, Pepi;
der Unterschied zu den xlFktt (bzw WorksheetFunctions) ist, dass VBA einer anderen NegativZahl-Darstellungskonvention folgt, eine Einheit hat in VBA 8, in Xl 10 Zeichen. Darüber hinaus konvertieren diese Fktt keine HexadezimalZahlen. Deshalb dürfte Nepumuks Tipp wahrscheinlich die beste Möglichkeit sein, wenn +- entsprde Berücksichtigung findet und du das auch benötigst. Alles Andere folgt höchst­wahrscheinlch keiner derartigen, allgemein verbindlichen Konvention.
Morrn, Luc :-?
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Hexadezimal und Dezimal in Excel konvertieren


Schritt-für-Schritt-Anleitung

Um große Zahlen von Hex nach Dezimal und umgekehrt in Excel zu konvertieren, kannst du folgende Methoden verwenden:

  1. Verwendung der Excel-Funktionen: Ab Excel 2010 kannst du die integrierten Funktionen DEZINHEX() und HEXINDEZ() nutzen.

    • Um eine Dezimalzahl in Hexadezimal umzuwandeln:
      =DEZINHEX(A1)
    • Um eine Hexadezimalzahl in Dezimal umzuwandeln:
      =HEXINDEZ(A1)
  2. VBA-Funktionen: Du kannst auch VBA verwenden, um die Konvertierung durchzuführen. Hier ist ein Beispiel für eine Funktion, die Dezimal in Hex umwandelt:

    Public Function DecToHex(ByVal Dec As Double) As String
       Dim i As Long, j As Long
       Dim x As Long
       Const Hexziffer As String = "0123456789ABCDEF"
       For i = 0 To 14
           If 16 ^ i > Dec Then Exit For
       Next
       For j = i - 1 To 0 Step -1
           x = Dec \ 16 ^ j
           DecToHex = DecToHex & Mid$(Hexziffer, x + 1, 1)
           Dec = Dec - x * 16 ^ j
       Next
    End Function
  3. Fehlerbehebung: Beachte, dass Excel bei der Verwendung von Double nur bis zu 15 signifikante Stellen genau rechnet. Größere Zahlen können gerundet werden.


Häufige Fehler und Lösungen

  • Fehler: Ergebnisse stimmen nicht überein
    Wenn du von Hex nach Dezimal und zurück konvertierst, kann es sein, dass die Ergebnisse nicht übereinstimmen. Dies liegt daran, dass Excel bei großen Zahlen (über 15 signifikante Stellen) runden kann. Achte darauf, dass deine Werte innerhalb der Grenzen liegen.

  • Lösung: Alternative Konvertierungsmethoden
    Wenn du mit großen Zahlen arbeitest, ziehe in Erwägung, ein Add-In zu verwenden, das speziell für solche Umwandlungen entwickelt wurde.


Alternative Methoden

  1. Add-Ins nutzen: Es gibt verschiedene Add-Ins, die eine genauere Umwandlung von Hexadezimal in Dezimal und umgekehrt ermöglichen. Suche nach einem, das zu deiner Excel-Version passt.

  2. Online-Tools: Es gibt auch viele Online-Tools, die eine einfache Umwandlung von Hex zu Dez und umgekehrt ermöglichen. Diese können nützlich sein, wenn du keine VBA-Programmierung verwenden möchtest.


Praktische Beispiele

  • Beispiel 1: Umwandlung einer großen Hex-Zahl:

    • Hexadezimal: 80335AF2586204
    • Formel: =HEXINDEZ("80335AF2586204") ergibt Dezimal: 36085262724915700
  • Beispiel 2: Umwandlung einer Dezimalzahl in Hex:

    • Dezimal: 36085262724915700
    • Formel: =DEZINHEX(36085262724915700)

Diese Beispiele zeigen, wie du mit den integrierten Excel-Funktionen und VBA die Umwandlungen durchführen kannst.


Tipps für Profis

  • Verwende die HEX2DEC und DEC2HEX Funktionen in VBA, um die Umwandlungen noch einfacher zu gestalten.
  • Achte darauf, bei der Arbeit mit großen Zahlen die Excel-Beschränkungen zu beachten. Wenn du z.B. in Hexadezimal rechnest, kann die größte darstellbare Zahl 38D7EA4C67FFF sein.
  • Bei der Arbeit mit VBA kannst du die CLng Funktion verwenden, um sicherzustellen, dass deine Umwandlungen korrekt durchgeführt werden.

FAQ: Häufige Fragen

1. Wie kann ich große Hexadezimalzahlen in Excel konvertieren?
Verwende die Funktionen DEZINHEX() und HEXINDEZ() in Excel oder schreibe eine VBA-Funktion, um die Konvertierung durchzuführen.

2. Warum stimmen die Ergebnisse bei der Umwandlung nicht überein?
Excel hat eine Beschränkung von 15 signifikanten Stellen bei Dezimalzahlen. Wenn du größere Zahlen verwendest, kann es zu Rundungsfehlern kommen.

3. Gibt es eine Möglichkeit, die Genauigkeit bei der Umwandlung zu erhöhen?
Für genauere Ergebnisse bei großen Zahlen kannst du ein spezialisiertes Add-In verwenden oder externe Software zur Umwandlung nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige