Sönke Tesch: Mit Hex-Zahlen rechnen

Beitrag lesen

Öhm, wenn Du schon eine Funktion geschrieben hast, die einen Hex-Text in eine Zahlvariable umwandelt, wo ist denn dann das Problem? Ich habe das Gefühl, wir reden aneinander vorbei :)

Ok, nochmals meine Frage, so deutlich wie es geht: Kann ich mit VBScript mit Hex-Werten rechnen _ohne_ diese zuerst ins Dezimalsystem umzuwandeln?

Hätte ich eigentlich gleich drauf kommen können: http://google.com/search?q=vbscript+hexvalue :)

Um das nochmal auseinanderzufriemeln:

1. Hex-Zahlen beginnen im VBScript-Code anscheinend mit "&H".
Mit der Programmzeile "x = &H3E + 1" sollte x den Wert 3F (hexadezimal) bzw. 63 (dezimal) erhalten.
Du kannst also direkt im VBScript-Code mit diesem Zahlsystem rechnen, musst die Zahlen halt nur als solche markieren. Genauso funktioniert's auch in anderen Sprachen, C benutzt zum Beispiel 0x als Markierung (hier: 0x3e).

2. Ich hatte Dich eingangs so verstanden, daß Du von außen, durch irgendeine Benutzereingabe meinetwegen, "Hexzahlen" bekommst. Das sind aber normalerweise Texte, und die müssen nicht in Dezimalzahlen umgewandelt werden, sondern in Zahlvariablen.
Man wandelt in solchen Fällen _Texte in Zahlen_ um und benutzt für die Darstellung ein System wie das Dezimal- oder Hexadezimalsystem. Aber man verwandelt nicht Hexzahlen in Dezimalzahlen - Hex- oder Dezimalzahlen kennt der Computer einfach nicht.

Die Funktion, die im ersten Google-Ergebnis (http://www.aboutvb.de/khw/artikel/khwhextodec.htm) vorgestellt wird, ist insofern auch ganz fürchterlich falsch benannt und falsch beschrieben.
HexToDec() wandelt keine Hexzahl in eine Dezimalzahl, sonden einen Text (im Hexadezimalsystem) in eine Zahl.
Die Beschreibung, die die da für die VB-Hex-Funktion wählen, ist genauso daneben:

Mit der Hex-Funktion in Visual Basic können Sie eine Dezimalzahl in
  eine Hex(adezimal)zahl konvertieren.

Das ist Schwachfug, richtig steht's bei MSDN unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafcthex.asp:

Hex(): Returns a String representing the hexadecimal value of a
  number (gibt einen Text zurück, der eine Zahl im Hexadezimalsystem
  darstellt).

Die Umkehrfunktion Val() ist unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctval.asp beschrieben.

Damit sind hoffentlich alle Klarheiten beseitigt :)

Gruß,
  soenk.e