Newsgroup: it.comp.lang.visual-basic
Titolo: Convertire valori hex in binari

Come posso convertire valori hex (esadecimali) in valori binari con VB (e
viceversa) ???
Grazie
--
Katred
SUPREME FIDDer #10, The Creator
(WebMaster Gruppo 2)

 Grazie
Non ci sono funzioni standard già esistenti... ma é comunque estremamente
semplice...
Un metodo non da purista e nemmeno efficentissimo (ma veloce da mettere in
pratica) é questo (solo la parte Hex-> bin, l'altra é analoga):
Function Hex2BIN(ByVal HexNumber as string) as string
    Dim lung as long
    Hex2BIN=space$(len(HexNumber)*4)
    Do until HexNumber=""
        lung=len(HexNumber)
        Select case mid$(HexNumber,lung,1)
            case "0"
                mid$(Hex2BIN,lung*4,4)= "0000"
            case "1"
                mid$(Hex2BIN,lung*4,4)= "0001"
            case "2"
                mid$(Hex2BIN,lung*4,4)= "0010"
            case "3"
                mid$(Hex2BIN,lung*4,4)= "0011"
            case "4"
                mid$(Hex2BIN,lung*4,4)= "0100"
            case "5"
                mid$(Hex2BIN,lung*4,4)= "0101"
            case "6"
                mid$(Hex2BIN,lung*4,4)= "0110"
            case "7"
                mid$(Hex2BIN,lung*4,4)= "0111"
            case "8"
                mid$(Hex2BIN,lung*4,4)= "1001"
            case "9"
                mid$(Hex2BIN,lung*4,4)= "1010"
            case "A"
                mid$(Hex2BIN,lung*4,4)= "1011"
            case "B"
                mid$(Hex2BIN,lung*4,4)= "1100"
            case "C"
                mid$(Hex2BIN,lung*4,4)= "1101"
            case "D"
                mid$(Hex2BIN,lung*4,4)= "1110"
            case "E"
                mid$(Hex2BIN,lung*4,4)= "1111"
        end select
        HexNumber= mid$(HexNumber,1,lung-1)
    loop
end function
            Ciao
                    Allanon

 ha scritto nel messaggio
news:9gl3tk$9gte7$1...@ID-67444.news.dfncis.de...


 wrote in message
news:9gl3tk$9gte7$1...@ID-67444.news.dfncis.de...


Pork... hai ragione...
Avevo la nebbia nel cervello...
Capita... (mi capita molto spesso quando faccio questo genere di funzioncine
per il NG :(   )
Sarà forse ora che vada in pensione? :)
            Ciao
                        Allanon

 Sarą forse ora che vada in pensione? :)
seeiii gia' prossssimoooo ai settttantaciiinqueeee???!!! ... BEATO TE!!! ;o)
A me ne mancano ancora un ventina!!! >:o(
io comunque le funzioncine le imposterei cosi':
Option Explicit
Private Sub Command1_Click()
    Dim Stringa As String
    '//in text1 metto il valore decimale
    Stringa = HexBin("&H" & Hex(Text1))
    MsgBox "Valore binario = " & Stringa
    Stringa = BinHex(Stringa)
    MsgBox "Valore esadecimale = " & Stringa
End Sub
Function HexBin(Valore As Integer) As String
    Dim N As Integer
    HexBin = ""
    For N = 0 To 7
        HexBin = HexBin & CStr((Valore And 2 ^ N) \ 2 ^ N)
    Next N
End Function
Function BinHex(Valore As String) As String
    Dim N As Integer, Numero As Integer
    Numero = 0
    For N = 0 To 7
        If Mid(Valore, N + 1, 1) = "1" Then Numero = Numero + (2 ^ N)
    Next N
    BinHex = Hex(Numero)
End Function
beppe
-----------------------------------------------------------
Visita il sito del WWF AltoFerrarese
http://www.comune.cento.fe.it/wwfaf
-----------------------------------------------------------

> seeiii gia' prossssimoooo ai settttantaciiinqueeee???!!! ... BEATO TE!!!
;o)
Prossimo é una parola grossa...
Diciamo che mi ci manca poco piů di mezzo secolo... :)
Comunque é molto bello (oltre di nobili intenti che condivido appieno) il
sito che hai taggato nella tua firma... ;)
            Ciao
                    Allanon


Const B0=2^0
Const B0=2^0
Const B0=2^0
Const B0=2^0
Const B0=2^0
Const B0=2^0
Const B0=2^0



Lasciate stare... OE manda i messaggi da solo... Hocambiato
l'implementazione al volo, scordatevi quella sfilza di costanti :P
Function HexToBin(ByVal sHex as String)As String
    ' Convertire da hex a long e' istantaneo, basta aggiungere &H all'inizio
    Dim I As Long, L as Long, B As Byte
    Dim sOut as String
    L=CLng("&H" & sHex)
    sOut=""
    For I=0 to 8 ' un nibble per volta
        B=L And &HF
        L=L \ &HF
        Select Case B
            Case 0
                sOut="0000" & sOut
            Case 1
                sOut="0001" & sOut
            Case 2
                sOut="0010" & sOut
            Case 3
                sOut="0011" & sOut
            Case 4
                sOut="0100" & sOut
            Case 5
                sOut="0101" & sOut
            Case 6
                sOut="0110" & sOut
            Case 7
                sOut="0111" & sOut
            Case 8
                sOut="1000" & sOut
            Case 9
                sOut="1001" & sOut
            Case 10
                sOut="1010" & sOut
            Case 11
                sOut="1011" & sOut
            Case 12
                sOut="1100" & sOut
            Case 13
                sOut="1101" & sOut
            Case 14
                sOut="1110" & sOut
            Case 15
                sOut="1111" & sOut
        End Select
    Next
    HexToBin=sOut
End Function
Function BinToHex(ByVal sBin as String)As String
    Dim I As Long, L as Long, B As String
    Dim sOut as String
    sOut=""
    I=Len(Trim(sBin)) Mod 4
    If i <>0 Then
        sBin = String(i, "0") & Trim(sBin)
    End If
    For I=0 to Len(sBin)\4 ' un nibble per volta
        B=Right$(sBin,4)
        sBin=Left(sBin, Len(sBin)-4)
        Select Case B
            Case "0000"
                sOut="0" & sOut
            Case "0001"
                sOut="1" & sOut
            Case "0010"
                sOut="2" & sOut
            Case "0011"
                sOut="3" & sOut
            Case "0100"
                sOut="4" & sOut
            Case "0101"
                sOut="5" & sOut
            Case "0110"
                sOut="6" & sOut
            Case "0111"
                sOut="7" & sOut
            Case "1000"
                sOut="8" & sOut
            Case "1001"
                sOut="9" & sOut
            Case "1010"
                sOut="A" & sOut
            Case "1011"
                sOut="B" & sOut
            Case "1100"
                sOut="C" & sOut
            Case "1101"
                sOut="D" & sOut
            Case "1110"
                sOut="E" & sOut
            Case "1111"
                sOut="F" & sOut
            Case Else
                sOut="Invalid HEX String"
                Exit Function
        End Select
    Next
    HexToBin=sOut
End Function
Ciaotutti,
Asterix