| |

Allgemeine DiskussionenRe: Hexadezimale Darstellung von Zahlen | |  | Autor: Wöllmi | Datum: 12.06.04 19:58 |
| Hi Thoro,
nicht ganz so
Zuerstmal mußt Du Dir darüber folgendes im Klaren sein:
1. Hexadezimalzahlen können je nach Wert mehreren Datentypen
zugeordnet werden.
z.B. &h9
Was ist dies nun ein Byte, Integer oder Long ?
Gehört dieser Wert einem vorzeichenlosen oder vorzeichenbehaftetem
Wertebereich an ?
Ohne Info über den Sinn dieses Wertes kann auch ich dies nicht sagen.
Im Prinzip kann man bisher wirklich behaupten, das dieser Hex-Wert allen
genannten Typen zugeordnet werden kann. Und dies sogar ohne den absoluten
Betrag fehl zu interprtieren.
2. Man muß sich also absolut über den Wertebereich im klaren sein. Anders gesagt
Du solltest schon wissen was sich hinter der Quelle für diese Hexadezimalzahl
verbirgt, bevor Du eine Konvertierung mit korrekten Ergebnissen programmieren
kannst.
3. Zu jedem Datentyp gehört eine definierte Anzahl von Stellen, die eine
Hexadezimalzahl annehmen kann.
(hier nur für die Ganzzahlentypen.)
z.B. Byte =2 &h01 , Integer=4 &h0001, Long =8 &h00000001 usw.
4. Jeder dieser Datentypen (im Gegensatz zu Single oder Double) kann
vorzeichenbehaftet oder vorzeichenlos betrachtet werden um diesen in eine
Dezimalzahl zu konvertieren.
Du mußt genau wissen was Du tun mußt um z.B. &hFF korrekt in eine Dezimalzahl
umzuwandeln.
Und genau hier spielt eben das höchstwertige Bit die entscheidende Rolle.
Das soll bedeuten, daß jetzt klar sein muß, ob die Hex-Zahl komplett abgebildet ist
oder nur ein teil davon dargestellt wurde. (siehe Pkt. 3)
Also was ist nun &hFF?
&hFF = 255
&hFF = -128
Solange Du nicht definiert hast zu welchen Datentyp mit welchem Wertebereich
der Ausdruck gehört ist beides Richtig!
Und noch einen draufgesetzt.
Ist &hFF nun Byte, Integer Long oder sogar Currency?
Byte Integer Long Currency
&hFF = &h00FF = &h000000FF = &h00000000000000FF
Wieder ist ohne weitere Definition alles richtig und dazu sogar betragsmäßig
identisch.
Und wie gesagt erst bei Kenntnis des Datentyps unter Berücksichtigung der Anzahl
der Stellen und des vereinbarten Wertebereichs ist eine EinEindeutige Aussage
möglich. Und erst hier muß das Vorzeichenbit bewertet werden!
z.B. Definition: Ein Ergebnis kann die Werte von 0..255 annehmen und wurde in
eine Hex-Zahl im Format Byte abgelegt.
Das bedeutet:
- Datentyp Byte => max. 2 Stellen
- kein Vorzeichen bewerten => Höchstwertiges Bit hat keine besondere Bedeutung
=> Wertevorrat = 0..255
- Umwandlung kann also mit ErgebnisDezimal = CByte("&hFF") erfolgen = 255
Wäre dies nun ein Long, so wäre &hFF ganz anders zu deuten.
- Long => in VB ein vorzeichenbehafteter Datentyp
- Wertevorrat => -2.147.483.648 bis +2.147.483.647
=> &h80000000 ... &h7FFFFFFF
- um &hFF zu verstehen müßte man also korrekter Weise folgendes bednken
=> &hFF ist nicht vollständig
=> korrekt bedutet dies also &h000000FF
=> das höchstwertige Bit ist "0" => also positiv
=> ErgebnisDezimal = CLong("&h000000FF") = ebenfalls 255
5. das höchstwertige Bit ist ausschließlich bei der "vollen" Stellenzahl und
Kenntnis des Wertebereichs als Vorzeichenbehafte zu berücksichtigen.
6. Überprüfe das korrekte Verhalten von VB mit eindeutig bekannten
Werten, damit Du nicht überrascht wirst.
z.B. "min.", "max." und "0" bei Vorzeichenbehafteten Werten, den Rest
macht VB dann schon richtig
7. Lass Dich in VB ruhig mal überraschen aber eben nicht überrumpeln!
=> Teste bevor evtl. Ergebnisse in Frage gestellt werden müssen.
Immer noch oder jetzt erst recht verwirrt?
Dann teste doch bitte einfach mal das Angesprochene und debugge die
Zwischenergebnisse.
Viel Spaß
Tschaui
Woellmi  |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|