String --> Zahl (HEX) und umgekehrt von ???
Hi Leuz,

habe mal 1 interessante funktion geschrieben :)

naja hier habt ihr sie:

[code:1:a06c994b2a];
; Hauptschleife
;
Repeat
Repeat
Print "1: String --> Zahl"
Print "2: Zahl --> String"
Print "exit: Ende"
eingabe$ = Input$("Modus: ")
if lower$(eingabe$) = "exit" Then end
Print
Until eingabe$ = "1" Or eingabe$ = "2" Or eingabe$ = "exit"
Select eingabe$
Case "1"
Repeat
eingabe$ = Input$("Geben sie einen String ein: ")
if lower$(eingabe$) = "exit" Then exit
temp$ = eingabe$
eingabe$ = Input$("Zu welcher Basis soll berechnet werden?(2 = Bit; 10 = Dezimal; 16 = Hexdezimal): ")
if lower$(eingabe$) = "exit" Then exit
Print
Print "Ergebnis:"
Print temp$ + " = " + str2hex(temp$,eingabe)
Print
Print
Forever
Case "2"
Repeat
eingabe$ = Input$("Geben sie eine Zahl ein: ")
if lower$(eingabe$) = "exit" Then exit
temp$ = eingabe$
eingabe$ = Input$("Wie viel Stellen soll der Hexstring haben?(2 = Byte): ")
if lower$(eingabe$) = "exit" Then exit
Print
Print "Ergebnis: "
Print temp$ + " = " + hex2str(temp,eingabe)
Print
Print
Forever
End Select
Forever


;
; Funktionen
;
Function str2hex(stringu$,basis=16)
stringu$ = Upper$(stringu$)
laenge = Len(stringu$)
For i=0 to laenge-1
tempstring$ = Left$(Right$(stringu$,i+1),1)
If Instr("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ",tempstring$) = 0 Then temstring$ = "0"
temp = basis^i
If temp = 0 Then temp = 1
Select tempstring$
Case "1"
ergebnis = ergebnis + 1*temp
Case "2"
ergebnis = ergebnis + 2*temp
Case "3"
ergebnis = ergebnis + 3*temp
Case "4"
ergebnis = ergebnis + 4*temp
Case "5"
ergebnis = ergebnis + 5*temp
Case "6"
ergebnis = ergebnis + 6*temp
Case "7"
ergebnis = ergebnis + 7*temp
Case "8"
ergebnis = ergebnis + 8*temp
Case "9"
ergebnis = ergebnis + 9*temp
Case "A"
ergebnis = ergebnis + 10*temp
Case "B"
ergebnis = ergebnis + 11*temp
Case "C"
ergebnis = ergebnis + 12*temp
Case "D"
ergebnis = ergebnis + 13*temp
Case "E"
ergebnis = ergebnis + 14*temp
Case "F"
ergebnis = ergebnis + 15*temp
Case "G"
ergebnis = ergebnis + 16*temp
Case "H"
ergebnis = ergebnis + 17*temp
Case "I"
ergebnis = ergebnis + 18*temp
Case "J"
ergebnis = ergebnis + 19*temp
Case "K"
ergebnis = ergebnis + 20*temp
Case "L"
ergebnis = ergebnis + 21*temp
Case "M"
ergebnis = ergebnis + 22*temp
Case "N"
ergebnis = ergebnis + 23*temp
Case "O"
ergebnis = ergebnis + 24*temp
Case "P"
ergebnis = ergebnis + 25*temp
Case "Q"
ergebnis = ergebnis + 26*temp
Case "R"
ergebnis = ergebnis + 27*temp
Case "S"
ergebnis = ergebnis + 28*temp
Case "T"
ergebnis = ergebnis + 29*temp
Case "U"
ergebnis = ergebnis + 30*temp
Case "V"
ergebnis = ergebnis + 31*temp
Case "W"
ergebnis = ergebnis + 32*temp
Case "X"
ergebnis = ergebnis + 33*temp
Case "Y"
ergebnis = ergebnis + 34*temp
Case "Z"
ergebnis = ergebnis + 35*temp
End Select
Next
Return ergebnis
End Function

Function hex2str$(zahl,laenge = 2)
return right$(hex$(zahl),laenge)
End Function[/code:1:a06c994b2a]

Mfg Skateboarder

PS: Meinung, Kritik und Lob sehr erwünscht :)
===
von ???
Ein kleiner Tipp: den "Case "A":ergebnis = ergebnis + 10*temp"-Marathon kannst du mit ASCII-Codes sehr viel eleganter machen (musst vorher natürlich noch trennen, ob normale Zahl oder Buchstabe; normale Zahlen wandelt BlitzBasic automatisch um):

[code:1:8dab2c84bb]ergebnis = ergebnis + (Asc(tempstring)-55)*temp[/code:1:8dab2c84bb]
===
von ???
hab ich mir auch gedacht, aber ich hab am laptop keine onlinehilfe :)



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: