excel vba binary to hex code example
Example 1: excel vba binary to hex
Function BinToHex$(bin$, Optional groupBy& = 1)
Dim c&, i&, j&, hNdx&, nibble&, bits$, s$
Dim b() As Byte, h() As Byte
Static bHexChars() As Byte, pow2() As Byte
Const HEX_CHARS$ = "0123456789ABCDEF"
If (Not Not bHexChars) = 0 Then bHexChars = StrConv(HEX_CHARS, vbFromUnicode)
If (Not Not pow2) = 0 Then pow2 = ChrW$(&H201) & ChrW$(&H804)
b = StrConv(bin, vbFromUnicode)
ReDim h(0 To -Int(-Len(bin) / 4) - 1)
hNdx = UBound(h)
For i = UBound(b) To 0 Step -1
If b(i) = 49& Then nibble = nibble + pow2(c)
c = c + 1
If c = 4 Then
h(hNdx) = bHexChars(nibble)
hNdx = hNdx - 1
nibble = 0
c = 0
End If
Next
If c Then h(hNdx) = bHexChars(nibble)
BinToHex = StrConv(h, vbUnicode)
If groupBy > 1 Then
i = Len(BinToHex) + 1
Do
i = i - groupBy
If i < 1 Then
s = " " & Mid$(BinToHex, 1, i + groupBy - 1) & s
Exit Do
End If
s = " " & Mid$(BinToHex, i, groupBy) & s
Loop While i
BinToHex = Trim$(s)
End If
End Function
binaryStr = "11111100110101011110001101000110"
MsgBox BinToHex(binaryStr)
MsgBox BinToHex(binaryStr, 4)
MsgBox BinToHex(binaryStr, 2)
Example 2: excel vba binary to hex
Function BitsToInteger%(bits$)
Dim i&
Static b() As Byte
If LenB(bits) > 32 Then Exit Function
If LenB(bits) = 32 Then
b = bits
Else
b = String$(16 - Len(bits), "0") & bits
End If
For i = 2 To 30 Step 2
BitsToInteger = 2 * BitsToInteger Or (b(i) Xor 48)
Next
If (b(0) Xor 48) Then BitsToInteger = BitsToInteger Or &H8000
End Function
MsgBox BitsToInteger("1111111111111111")
MsgBox BitsToInteger("0111111111111111")
Example 3: excel vba binary to hex
Function BitsToByte(bits$) As Byte
Dim i&
Static b() As Byte
If LenB(bits) > 16 Then Exit Function
If LenB(bits) = 16 Then
b = bits
Else
b = String$(8 - Len(bits), "0") & bits
End If
For i = 0 To 14 Step 2
BitsToByte = 2 * BitsToByte Or (b(i) Xor 48)
Next
End Function
MsgBox BitsToByte("00001100")
MsgBox BitsToByte("10000001")