Große Zahlen in Hex umwandeln

23/02/2010 - 15:27 von W. Wolf | Report spam
Hallo,

habe hier die Aufgabe zu einer MAC-Adresse
&H3000 addieren. Das habe ich wie folgt versucht:
Debug.print hex(cdec("&H0001A9014927")+12288)
was an der hex-Funktion scheitert (Überlauf),
das Ergebnis ist für die hex-Funktion zu groß.

Gibt es einen eleganteren Weg? Klar, ich
könnte eine Funktion in VB schreiben welche die
hex-Umwandlung auch mit großen Zahlen ermöglicht,
traue ich mir gerade noch zu. Möchte nur wissen ob
es da nicht auch was einfacheres gibt.

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 Schmidt
23/02/2010 - 16:08 | Warnen spam
"W. Wolf" schrieb im Newsbeitrag
news:

habe hier die Aufgabe zu einer MAC-Adresse
&H3000 addieren. Das habe ich wie folgt versucht:
Debug.print hex(cdec("&H0001A9014927")+12288)
was an der hex-Funktion scheitert (Überlauf),
das Ergebnis ist für die hex-Funktion zu groß.

Gibt es einen eleganteren Weg? Klar, ich
könnte eine Funktion in VB schreiben welche die
hex-Umwandlung auch mit großen Zahlen ermöglicht,
traue ich mir gerade noch zu. Möchte nur wissen ob
es da nicht auch was einfacheres gibt.



Nicht wirklich - am einfachsten (falls Dir der
Currency-Wertebereich ausreicht) mittels
Aufsplittung in 2 Longs:

Private Type TwoLongs: L1 As Long: L2 As Long: End Type
Private Type OneCurrency: Cur As Currency: End Type

Private Function LargeHex(ByVal Value As Currency, _
Optional ByVal ToAdd As Currency) As String

Dim LL As TwoLongs, C As OneCurrency
C.Cur = (Value + ToAdd) / 10000
LSet LL = C

LargeHex = Right$("0000000" & Hex$(LL.L2), 8) & _
Right$("0000000" & Hex$(LL.L1), 8)
End Function


Aufruf (bzw. Benutzung) wàre dann:
Debug.Print LargeHex("&H0001A9014927", 12288)

Olaf

Ähnliche fragen