Newsgroup: it.comp.lang.visual-basic
Titolo: Inverso di Hex$

Per passare da decimale a esadecimale uso Hex$.
E per passare da stringa (rappresentante un esadecimale) a un valore da
mettere in una variabile?
Prima di scrivermi un for-next che mi faccia moltiplicazione 16^n e la somma
a ritroso, spero che qualcuno conosca una funzione di VB.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 mettere in una variabile?
Val
MsgBox Val("&h" & Hex$(100))
!!!!!!!!!!
Beeeepppp... Le so... TUTTE!!!!! :)))
                    Ciao
                                                    Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità

 da mettere in una variabile?
prova con
a = cint("&HA3")
però non ho provato i limiti
--
Salutoni
Sergio

 Beeeepppp... Le so... TUTTE!!!!! :)))
ma io ho l'orologio indietro..... ;-)
--
Salutoni
Sergio

 ma io ho l'orologio indietro..... ;-)
Non litigate.
Ottimo tempo per entrambi.
Grazie.
Ciao
Alberto

 ma io ho l'orologio indietro..... ;-)
Baro! :-PPPP
            Ciao
                                    Allanon
P.S. Se usi windows XP (o .NET server 2003) puoi integrate il servizio
internet time, io sono sincronizzato con: 
ntp2.ien.it
 (istituto Galileo
Ferraris = orario ufficiale per l'Italia)?


 Ottimo tempo per entrambi.
Sì, però il tuo post mi ha lasciato parecchio perplesso ;-)
Soprattutto perchè hai fatto dei cast espliciti la tua dottrina fondamentale
:-)
--
Salutoni
Sergio


A titolo informativo:
Alla fine ho dovuto comunque scrivere una mia funzione di conversione,
perchè &HFFFF viene convertito dal Val come -1 anzichè 65535.
Basterebbe mettere un If valore <0 then valore=65535+valore, ma in realtà il
problema si pone quando ho più di 2 byte, perchè Val trasforma la parte alta
in positivo e poi somma la parte bassa convertita a parte, quindi, nel caso
di &H0FFFFFF, mi effettua la conversione di 0F (alto) come 1048576
(correttamente), poi mi effettua la conversione di FFFF (basso) come -1.
Quindi, nella funzione dovrei effettuare conversioni a blocchi di 4 hex,
verificando ogni volta se il risultato è negativo e poi moltiplicando per
16^n.
Quindi, ho scritto una funzioncina stupida e brutta, ma che funziona in modo
molto lineare e leggibile.
Volendo accorciarla, il case può ridursi ad un if e usare il codice ascii
del carattere, diminuito di un offset, come valore, ma sinceramente non so
quanto a performance quanto si guadagni.
Ciao
Alberto
Public Function Hex2Dec(ByVal Stringa_Hex As String) As Long
    Dim N As Long
    Dim LUNG As Long
    Dim VAL_TMP As Long
    Dim VAL_TOT As Long
    Dim CHAR As String
    Hex2Dec = 0
    LUNG = Len(Stringa_Hex)
    If LUNG < 1 Then Exit Function
    'On Error Resume Next
    VAL_TOT = 0
    For N = 0 To LUNG - 1
        CHAR = UCase$(Mid$(Stringa_Hex, LUNG - N, 1))
        Select Case CHAR
            Case "A"
                VAL_TMP = 10
            Case "B"
                VAL_TMP = 11
            Case "C"
                VAL_TMP = 12
            Case "D"
                VAL_TMP = 13
            Case "E"
                VAL_TMP = 14
            Case "F"
                VAL_TMP = 15
            Case Else
                VAL_TMP = Val(CHAR)
        End Select
        VAL_TOT = VAL_TOT + (VAL_TMP * (16 ^ N))
    Next N
    Hex2Dec = VAL_TOT
End Function


 molto lineare e leggibile.
OPs... :(
Temo che usando CInt questo non sarebbe successo... :(
E nemmeno usando Val("&h" & stringa & "h")
Sorry...
