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 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 "Ergebnis:" Print temp$ + " = " + str2hex(temp$,eingabe) 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 "Ergebnis: " Print temp$ + " = " + hex2str(temp,eingabe) 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 :) |