Umrechnen von Hexadezimal zu Dezimal

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Cardonic

Betreff: Umrechnen von Hexadezimal zu Dezimal

BeitragFr, Feb 10, 2006 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich habe mir eine kleine Funktion, die hexadezimale Werte (die in Strings gespeichert sind) in dezimale Werte umrechnet, geschrieben. 8)
Gibt es eventuell eine einfachere bzw. schnellere Methode ?

Code: [AUSKLAPPEN]
Function HexaZuDez(hexa$)
   length = Len(hexa$)
   dez = 0
   For i = 1 To length
      Select Mid(hexa$,i,1)
         Case "1" dez = dez +  1 *  16^(length-i)
         Case "2" dez = dez +  2 *  16^(length-i)
         Case "3" dez = dez +  3 *  16^(length-i)
         Case "4" dez = dez +  4 *  16^(length-i)
         Case "5" dez = dez +  5 *  16^(length-i)
         Case "6" dez = dez +  6 *  16^(length-i)
         Case "7" dez = dez +  7 *  16^(length-i)
         Case "8" dez = dez +  8 *  16^(length-i)
         Case "9" dez = dez +  9 *  16^(length-i)
         Case "A" dez = dez + 10 *  16^(length-i)
         Case "B" dez = dez + 11 *  16^(length-i)
         Case "C" dez = dez + 12 *  16^(length-i)
         Case "D" dez = dez + 13 *  16^(length-i)
         Case "E" dez = dez + 14 *  16^(length-i)
         Case "F" dez = dez + 15 *  16^(length-i)
      End Select
   Next
   Return dez
End Function

Arrow die hexadezimalen Werte müssen als String eingegeben werden

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 10, 2006 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier etwas kürzer:Code: [AUSKLAPPEN]
h$=Input$("HEX-Zahl eingeben: ")


wert=0
position=0
For q=Len(h) To 1 Step-1
 zwischenwert=Asc(Upper(Mid(h,q,1)))-48
 If zwischenwert>9 zwischenwert=zwischenwert-7
 wert=wert+zwischenwert*16^position
 position=position+1
Next

Print wert

WaitKey
 

Steffen

BeitragFr, Feb 10, 2006 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber ohne ^ gehts schneller:
Code: [AUSKLAPPEN]
h$=Input$("HEX-Zahl eingeben: ")


wert=0
position=0
For q=1 To Len(h)
 zwischenwert=Asc(Upper(Mid(h,q,1)))-48
 If zwischenwert>9 zwischenwert=zwischenwert-7
 wert=wert*16+zwischenwert
Next

Print wert

WaitKey


~~CodeTags umgestellt~~
d-bug
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 10, 2006 9:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Steffen, bin echt beeindruckt. Hätte nicht gedacht das man die Umrechnung auch 'vorwärts' durchführen kann... Ausserdem spart man sich eine Variable! Die 'position' kann da weg!..

Cardonic

BeitragFr, Feb 10, 2006 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich habe auch schon an den ASCII-Codes studiert; habe aber keine vernünftige Lösung gefunden Rolling Eyes
Ich finde es toll, dass ihr mir noch andere Möglichkeiten gezeigt habt Arrow Vielen Dank

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

BtbN

BeitragFr, Feb 10, 2006 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Normal wandelt Int("$AF12BF") Auch Hexa-Dezimal in Dezimal um, kann aber sein, dass ich mich täuse.
 

Apocalyptic

BeitragFr, Feb 10, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
BORNtobeNAMELESS hat Folgendes geschrieben:
Normal wandelt Int("$AF12BF") Auch Hexa-Dezimal in Dezimal um, kann aber sein, dass ich mich täuse.


Ja, das tust du Smile
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Cardonic

BeitragFr, Feb 10, 2006 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@ BORNtobeNAMELESS : Was denkst du, warum wir solch eine Funktion überhaupt schreiben.
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

BtbN

BeitragFr, Feb 10, 2006 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs ma in BMax gestestet, und da gibt Int("$FF") 255 zurück.
Ich meine mich zu erinnern, dass das in BB genau so war.

Cardonic

BeitragFr, Feb 10, 2006 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs ma in BB2D und B+ getestet, und da gibt Int("$FF") 0 zurück Smile
Ich denke nicht, dass deine Erinnerungen in diesem Fall korrekt sind Laughing

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 10, 2006 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hier geht auch mit B3DCode: [AUSKLAPPEN]
Print Int($ff)

WaitKey
Man sollte das ganze ohne "" angeben, dann gehts.

So jetzt ist der ganze Code schon ganz kurz geworden! Kennt jemand noch kürzer? : Laughing

Hip Teen

BeitragFr, Feb 10, 2006 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Schlaumeier..
Du kannst da genauso
Code: [AUSKLAPPEN]
Print $FF

schreiben. $ leitet in BB ja ne Hex Zahl ein, das ganze wird dann beim compilen umgerechnet. Was machst du aber, wenn das ganze in ner Variable steckt? NA? eben -.-
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 10, 2006 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt! Bin wohl schon zu lange wach... grrrr... Meine Gedankenkreise kreisen und können sich an nichts mehr orientieren... Rolling Eyes

Cardonic

BeitragSa, Feb 11, 2006 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@ hectic : Der Sinn der langen Codes ist, dass man eine hexadezimale Zahl, welche in einem String gespeichert ist, in eine Binäre Zahl umrechnen kann; dies lässt sich leider nicht mit einer Codezeile schreiben Laughing

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group