Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Hex zu dezimal umwandlung fehler wenn höchste stelle 8 oder 9

Frage Entwicklung Basic

Mitglied: Vollnoob

Vollnoob (Level 1) - Jetzt verbinden

31.07.2010, aktualisiert 18.10.2012, 5022 Aufrufe, 7 Kommentare

Hallo zusammen,
habe im Grunde überhaupt keine Ahnung von Programmieren und mir mehr oder weniger einen vbs code für meine Zwecke zusammen gesucht und stehe grad vor einem Problem:
habe mir über Eval("&H" & "eineMeinerHexZahlen" ) versucht diverse Zahlen von hex nach dezimal umzuwandlen, hat auch wunderbar geklappt, nur bei hex Zahlen, die als höchste stelle ne 8 oder 9 haben kommen irgendwie negative falsche Werte bei heraus, glaub zumindest, dass es an den Stellen liegt.
hoffe es findet sich jemand, der mir das Problem dabei erklären kann.
besten Dank im voraus !
Mfg
Vollnoob ^^
Mitglied: bastla
31.07.2010 um 19:20 Uhr
Hallo Vollnoob!

Hab's mir zwar nicht genauer angesehen, aber vermutlich tritt dieses Verhalten nur für 8-stellige Hexwerte von &H8000000 bis &HFFFFFFFF auf. Der Datentyp "Long" bietet einen Wertebereich von -2.147.483.648 bis 2.147.483.647 - ist das höchste Bit gesetzt, wird dieses als Vorzeichen interpretiert.

BTW: Zur Konvertierung kannst Du anstelle von "Eval()" auch "CLng()" oder zB "CDbl()" verwenden ...

... und folgender Workaround (die Hex-Zahl steht in der Variablen H) sollte eigentlich klappen:
Dez = CDbl("&H1" & H) - CDbl("&H1" & String(Len(H),"0"))
Das Voranstellen von "1" sollte die Hex-Zahl auf jeden Fall in den positiven Bereich bringen und das Subtrahieren von "&H1" + der entsprechenden Anzahl von Nullen rechnerisch die String-Manipulation wieder rückgängig machen ...

Grüße
bastla
Bitte warten ..
Mitglied: Vollnoob
31.07.2010 um 19:24 Uhr
Hallo Bastla,
ah, cool, das dürfte es gewesen sein, sind auch 8 stellige Werte^^.
Mit CLng() klappts einwandfrei, besten Dank
Mfg
Vollnoob
Bitte warten ..
Mitglied: Vollnoob
31.07.2010 um 19:46 Uhr
Hab deine Methode mit dem CDbl() mit der 1 Voranstellen auch mal eben noch ausprobiert, funktioniert .
Hat also daran gelegen, was du vermutet hast.
Danke nochmal
Mfg
Vollnoob
Bitte warten ..
Mitglied: 76109
01.08.2010 um 08:38 Uhr
Hallo bastla!

Der Trick mit CDbl (64Bit) funktioniert super, aber wie bekomme ich auf einfachem Wege den Hex-String wieder zurück. Mit Hex funktioniert es nicht?
01.
H = "FFFFFFFF" 
02.
     
03.
D = CDbl("&H1" & H) - CDbl("&H1" & String(Len(H), "0")) 
04.
 
05.
X = Hex(D)  'Überlauffehler
Gruß Dieter
Bitte warten ..
Mitglied: bastla
01.08.2010, aktualisiert 18.10.2012
Hallo Dieter!

Einen einfachen Weg kenne ich leider auch nicht, und eine passende selbst geschriebene Function hast Du ja sicher schon oder bekommst Du auf jeden Fall selbst hin (in Batch hatten wir das Thema übrigens auch schon mal: http://www.administrator.de/wissen/dezimal-zu-hexadezimal-132273.html ) ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
01.08.2010 um 11:10 Uhr
Hallo bastla!

Zitat von bastla:
Einen einfachen Weg kenne ich leider auch nicht, und eine passende selbst geschriebene Function hast Du ja sicher schon oder
bekommst Du auf jeden Fall selbst hin ....
Yepp, so etwas ähnliches, wie in dem Batch-Link habe ich auch in VB (Bits L/R-Rotieren und L/R-Schieben), aber auf den den Trick mit CDbl ("&H1 & ....) bin ich noch nicht gekommen und dachte, dass Du dafür eventuell auch eine einfache Lösung hast

Noch einen schönen Sonntag!

Gruß Dieter
Bitte warten ..
Mitglied: bastla
01.08.2010 um 13:40 Uhr
Hallo Dieter!

Tatsächlich hatte ich mich bis gestern mit diesem Thema eigentlich überhaupt nicht beschäftigt - der Workaround ist ein "Abfallprodukt" von Batch-Lösungen zum Thema "Interpretation von mit Null beginnenden Zahlen als Oktalwerte" (was dort dann tatsächlich bei "08" und "09" zu Fehlern führt) ...

Auch Dir einen schönen Rest des Sonntags!
bastla
Bitte warten ..
Ähnliche Inhalte
C und C++
Dezimal Dual Rechner (6)

Frage von Matt180 zum Thema C und C ...

Router & Routing
Mikrotik hex firewall regeln (2)

Frage von ecki33 zum Thema Router & Routing ...

Netzwerkprotokolle
Ethernet HEX Dump (6)

Frage von WhoIam zum Thema Netzwerkprotokolle ...

Router & Routing
gelöst Mikrotik hEX - RB750Gr3: bootet nicht mehr nach RouterOS Upgrade - Hilfe (12)

Frage von schmiro zum Thema Router & Routing ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (21)

Frage von McLion zum Thema Router & Routing ...

Windows Server
Kennwort vergessen bei Hyper vserver 2012r (20)

Frage von jensgebken zum Thema Windows Server ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...