excel vba binary to hex code example

Example 1: excel vba binary to hex

'Fast VBA function to convert binary string to hexadecimal string...

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)      '<--displays: FCD5E346
MsgBox BinToHex(binaryStr, 4)   '<--displays: FCD5 E346
MsgBox BinToHex(binaryStr, 2)   '<--displays: FC D5 E3 46


'Note: this is an extremely fast and optimized function that can convert
'      an arbitrarily large binary string to hex.
'
'
'

Example 2: excel vba binary to hex

'Extremely fast VBA function to convert a binary string to a 16-bit Integer:

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

'Example:

MsgBox BitsToInteger("1111111111111111")    '<--displays: -1
MsgBox BitsToInteger("0111111111111111")    '<--displays:  32767

Example 3: excel vba binary to hex

'Extremely fast VBA function to convert a binary string to a Byte:

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


'Example:

MsgBox BitsToByte("00001100")		'<--displays: 12
MsgBox BitsToByte("10000001")		'<--displays: 129
'
'
'

Tags:

Vb Example