vba bits to integer excel code example

Example 1: excel vba long integer to bits

Function LongToBits$(ByVal n&)
    Dim i&
    LongToBits = "00000000000000000000000000000000"
    If n And &H80000000 Then
        Mid$(LongToBits, 1, 1) = "1"
        n = n And Not &H80000000
    End If
    For i = 32 To 2 Step -1
        If n And 1 Then Mid$(LongToBits, i, 1) = "1"
        n = n \ 2
    Next
End Function

'------------------------------------------------------------------------------

MsgBox LongToBits(0)			'<--displays: 00000000000000000000000000000000
MsgBox LongToBits(293781237)	'<--displays: 00010001100000101011111011110101
MsgBox LongToBits(-1)			'<--displays: 11111111111111111111111111111111

Example 2: vba bits to integer

'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

Tags:

Vb Example