vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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 12:37

Hi,

und noch ne Routine.

Hoffentlich hab ich mich nicht vertippt
Function fkt_sHex2Dez(sData As String, sTyp As String) As String
    '
    'Umwandlung eines Hexadezimalwertes "00000000" bis "FFFFFFFF"
    'Der Zieldatentyp entscheidet über das Ergebnis!
    '
    'Alle Ergebnisse werden als String zurückgegeben.
    'Es werden derzeit folgende Datentypen unterstützt:
    '
    'Vorzeichenbehaftet:
    '"SI" = signed Integer => -32768 ... +32767
    '                      => &h80000 ... &h7FFF
    '                      => &hFFFF = -1
    '"SL" = signed Long    => -2.147.483.648 bis +2.147.483.647
    '                      => &h80000000 ... &h7FFFFFFF
    '                      => &hFFFFFFFF = -1
    'Nicht Vorzeichebehaftet:
    '"UI" = unsigned Integer => 0...65535
    '                        => &h0000...&hFFFF
    '"UL" = unsigned Long    => 0...4294967295
    '                        => &h00000000...&hFFFFFFFF
 
    Select Case sTyp
       Case "UI" 'unsigned INT  0...65535
         'Ein Integer kann hexadezimal max. 4 Stellen umfassen!
         'Da &hFFFF vorzeichenlos 65535 ergibt muß mit "CLng" umgeformt werden!
         'Beachte: wenn wieder in Zahlentyp umgewandelt werden soll, muß
         '         Long verwendet werden!
         fkt_sHex2Dez = CStr(CLng("&h" & Right$("0000" & sData, 4)))
 
       Case "UL" 'unsigned Long  0...4294967295
         'Ein Long kann hexadezimal max. 8 Stellen umfassen!
         'Da &hFFFFFFFF vorzeichenlos 4294967296 ergibt muß mit "CCur" 
         ' umgeformt werden!
         'Beachte: wenn wieder in Zahlentyp umgewandelt werden soll, muß
         '         Cur verwendet werden!
         Dim curDezimalwert As Currency
         curDezimalwert = CCur("&h" & Right$("00000000" & sData, 8))
         Select Case curDezimalwert
            Case Is < 0
               fkt_sHex2Dez = CStr(4294967296# + curDezimalwert)
            Case Else
               fkt_sHex2Dez = CStr(curDezimalwert)
         End Select
 
       Case "SL"  'signed Long -2.147.483.648 bis +2.147.483.647
          'Umwandlung eines Hexadezimalwertes "00000000" bis "FFFFFFFF"
          'in einen Long-Dezimalwert unter Berücksichtigung
          'des zulässingen Wertebereichs von -2.147.483.648 bis + 2.147.483.647
          '
          Dim curDezimalZahl As Currency
          'Ein Long kann hexadezimal max. 8 Stellen umfassen!
          'Da &hFFFFFFFF vorzeichenlos nicht in Long paßt, muß mit
          '"CCur" umgeformt werden!
          curDezimalZahl = CCur("&h" & Right$("00000000" & sData, 8))
 
          Select Case curDezimalZahl
             Case Is > 2147483647
                'größter zulässiger Long-Wert von + 2.147.483.647
                'wurde überschritten!
                'Korrektur erforderlich!
                curDezimalZahl = curDezimalZahl - 4294967296#
          End Select
 
          fkt_sHex2Dez = CStr(CLng(curDezimalZahl))
 
       Case "SI"  'signed Integer -32768 bis +32767
          'Umwandlung eines Hexadezimalwertes "0000" bis "FFFF"
          'in einen Integer-Dezimalwert unter Berücksichtigung
          'des zulässingen Wertebereichs von -32768 bis + 32767
          '
          Dim lngDezimalZahl As Long
 
          'Ein Integer kann hexadezimal max. 4 Stellen umfassen!
          'Da &hFFFF vorzeichenlos 65535 ergibt muß mit
          '"CLng" umgeformt werden!
          lngDezimalZahl = CLng("&h" & Right$("0000" & sData, 4))
 
          Select Case lngDezimalZahl
             Case Is > 32767
                'größter zulässiger INT-Wert von 32767
                'wurde überschritten!
                'Korrektur erforderlich!
                lngDezimalZahl = lngDezimalZahl - 65536
          End Select
 
          fkt_sHex2Dez = CStr(CInt(lngDezimalZahl))
 
       Case Else
          fkt_sHex2Dez = "Error!"
 
    End Select
 
End Function

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.826Thoro12.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.815Wö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.997Wö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