vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Allgemeine Diskussionen
Re: 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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hexadezimale Darstellung von Zahlen2.228Thoro12.06.04 01:25
Re: Hexadezimale Darstellung von Zahlen1.759ModeratorDieter12.06.04 07:16
Re: Hexadezimale Darstellung von Zahlen1.825Thoro12.06.04 09:10
Re: Hexadezimale Darstellung von Zahlen1.934Wöllmi12.06.04 11:14
Re: Hexadezimale Darstellung von Zahlen1.933Wöllmi12.06.04 11:33
Re: Hexadezimale Darstellung von Zahlen1.814Wöllmi12.06.04 12:37
Re: Hexadezimale Darstellung von Zahlen1.761Thoro12.06.04 16:28
Re: Hexadezimale Darstellung von Zahlen2.179Wöllmi12.06.04 19:58
Funktion zum Üben und testen1.996Wöllmi12.06.04 20:01

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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