Jag söker konvertering Från Binärt format till Hex format Hur har du värdet du vill visa i Hex? I en textsträng eller som en variabel? Om du har den i en variabeln gör du bara såhär: Såg att det fanns ett tips som fixade detta [Konvertera ett binärtal till hexadecimalt ] Tack för svaret, men jag får inte till det Något var galet med den funktionen, jag har gjort om den lite och den fungerar för mig. Klistra in koden i ett formulär med två textboxar och en knapp. Tackar, men var ska "knapp" funtionen in Oops, fick visst inte med mig all kod... Har gjort en alternativ funktion: Andreas:Bin till Hex
Om någon svarar på detta!
Så skulle jag vilja få ett färdigt exempel
Den måste klara av flera tecken...
SörenSv: Bin till Hex
MsgBox Hex(tal)
/JohanSv: Bin till Hex
/JohanSv: Bin till Hex
Om jag har en texbox, och får detta binära värde
001010100100000100000101000000010100000100000
Så vill jag få det till ett Hexvärde
Hur gör jag då enklast för att visa värdet i en ny textbox...
SörenSv: Bin till Hex
<code>
Public Function BinToHex(ByVal NumToConv As String) As String
Dim a As Integer
Dim i As Integer
Dim B As String
Dim C As String
' För att konvertera till Hex, måste detta göras
' fyra nummer i taget. Denna del bryter isär dessa
' i exakta delar om fyra.
a = Len(NumToConv) Mod 4
If a <> 0 Then
If a = 1 Then NumToConv = "000" + NumToConv
If a = 2 Then NumToConv = "00" + NumToConv
If a = 3 Then NumToConv = "0" + NumToConv
End If
a = Len(NumToConv) / 4
For i = 0 To a - 1
B = Mid$(NumToConv, (i * 4) + 1, 4)
' Konverterar de fyra siffrorna vi har till Hex.
Select Case B
Case "0000": C = C + "0"
Case "0001": C = C + "1"
Case "0010": C = C + "2"
Case "0011": C = C + "3"
Case "0100": C = C + "4"
Case "0101": C = C + "5"
Case "0110": C = C + "6"
Case "0111": C = C + "7"
Case "1000": C = C + "8"
Case "1001": C = C + "9"
Case "1010": C = C + "A"
Case "1011": C = C + "B"
Case "1100": C = C + "C"
Case "1101": C = C + "D"
Case "1110": C = C + "E"
Case "1111": C = C + "F"
End Select
Next i
' Retunerar det hexadecimala värdet
BinToHex = C
End Function
</code>
/JohanSv: Bin till Hex
Samt var ändrar du Textboxarn "namnet"
SörenSv: Bin till Hex
I händelsen för knapptryckningen skriver du:
Text2=BinToHex(Text1)
/JohanSv: Bin till Hex
<code>
Public Function BinToHex(ByVal NumToConv As String) As String
Dim i As Long
Dim lPos As Long
Dim sTemp As String
Dim sResult As String
Dim sByte As String
Dim Data() As Byte
Dim Value As Long
sTemp = String(4 - (Len(NumToConv) Mod 4), "0") & NumToConv
sResult = Space(Len(sTemp) / 4)
For i = 1 To Len(sTemp) Step 4
Data = StrConv(Mid$(sTemp, i, 4), vbFromUnicode)
Value = ((Data(0) = 49) And 8) + ((Data(1) = 49) And 4) + ((Data(2) = 49) And 2) + ((Data(3) = 49) And 1)
lPos = lPos + 1
Mid$(sResult, lPos) = Hex$(Value)
Next
BinToHex = sResult
End Function
</code>Sv: Bin till Hex
Riktigt snygg lösning när du sätter ihop värdet! (hmm, hur nördig är man inte när man benämner en textremsa "snygg"...) Mest för att "reta" dej kommer jag här med en buggfix ;) Det blir en inledande 0 om längden på indatat är jämt delbart med 4...
<code>
Public Function BinToHex(ByVal NumToConv As String) As String
Dim i As Long
Dim lPos As Long
Dim sResult As String
Dim sByte As String
Dim Data() As Byte
Dim Value As Long
If Len(NumToConv) Mod 4 Then
NumToConv = String(4 - (Len(NumToConv) Mod 4), "0") & NumToConv
End If
sResult = Space(Len(NumToConv) / 4)
For i = 1 To Len(NumToConv) Step 4
Data = StrConv(Mid$(NumToConv, i, 4), vbFromUnicode)
Value = ((Data(0) = 49) And 8) + ((Data(1) = 49) And 4) + ((Data(2) = 49) And 2) + ((Data(3) = 49) And 1)
lPos = lPos + 1
Mid$(sResult, lPos) = Hex$(Value)
Next
BinToHex = sResult
End Function
</code>
/Johan