grazie giulio, non mi piace molto usare la shell per la conversione, spero che esista un comando gambas..
per ora ho tamponato così:
PUBLIC sDecimale AS Integer
PUBLIC sHesa AS String
PUBLIC sperc AS Float
PUBLIC SUB conversione()
DIM p AS Integer
DIM i AS Integer
DIM lettera AS String
DIM sBinario AS String
DIM binario AS String
DIM intero AS String
DIM numero AS String
DIM x AS Integer
p = Len(shesa)
'conversione esdecimale>>>>>>>><
FOR i = 1 TO p
lettera = Mid$(shesa, i, 1)
IF lettera = "0" THEN numero = "0000"
IF lettera = "1" THEN numero = "0001"
IF lettera = "2" THEN numero = "0010"
IF lettera = "3" THEN numero = "0011"
IF lettera = "4" THEN numero = "0100"
IF lettera = "5" THEN numero = "0101"
IF lettera = "6" THEN numero = "0110"
IF lettera = "7" THEN numero = "0111"
IF lettera = "8" THEN numero = "1000"
IF lettera = "9" THEN numero = "1001"
IF lettera = "a" THEN numero = "1010"
IF lettera = "b" THEN numero = "1011"
IF lettera = "c" THEN numero = "1100"
IF lettera = "d" THEN numero = "1101"
IF lettera = "e" THEN numero = "1110"
IF lettera = "f" THEN numero = "1111"
sBinario = sbinario & numero
NEXT
x = 1
'conversione binario>>>>>>>>>decimale
FOR i = 1 TO 16
binario = Mid$(sBinario, i, 1)
intero = Val(binario) * x
x = x * 2
sDecimale = sDecimale + intero
NEXT
sperc = (sDecimale * 100) / 65535 ' calcolo valore percentuale
sperc = Val(Format(sperc, "##.00"))
END
Beh, è il bello di GNU/linux. Tanti modi per fare la stessa cosa. Pura libertà. :-)
Io per pigrizia :-) avrei fatto così:
PUBLIC SUB Main()
DIM sHesa, sShellOutput AS String
DIM iDecimale AS Integer
sHesa = "0x15a"
SHELL "printf '%d\n' " & sHesa TO sShellOutput
iDecimale = Val(sShellOutput)
PRINT iDecimale
END
Scusate ma un semplice Intero = VAL(Stringa_Esadecimale) non è più semplice? Perché complicarsi la vita?
Esempio:
strEsadecimale = "&h4b56"
intIntero = VAL(strEsadecimale)
Restituisce 19286 come deve essere. :oops:
...ho notato anche questo modo:
TextArea1.text = &esadecimale
TextBox1.Text = &esadecimale
TextLabel1.Text = &esadecimale
Label1.Text = &esadecimale
...e così via con gli altri oggetti di testo
o anche in console:
Esempio pratico:
Public Sub Button1_Click()
Label1.Text = &1D1DC
Print &1D1DC
End
Il risultato nella Label1 ed in console sarà:
119260
Ad ogni modo rinvio per una esposizione più generale alla seguente pagina della nostra WIKI:
http://www.gambas-it.org/wiki/index.php?title=Convertire_un_numero_da_rappresentazione_Esadecimale_a_Decimale