excel vba integer is bit set code example
Example 1: excel vba binary from byte value
Public Function ByteToBits$(ByVal n&)
ByteToBits = "00000000"
If n And 1 Then MidB$(ByteToBits, 15) = "1"
If n And 2 Then MidB$(ByteToBits, 13) = "1"
If n And 4 Then MidB$(ByteToBits, 11) = "1"
If n And 8 Then MidB$(ByteToBits, 9) = "1"
If n And 16 Then MidB$(ByteToBits, 7) = "1"
If n And 32 Then MidB$(ByteToBits, 5) = "1"
If n And 64 Then MidB$(ByteToBits, 3) = "1"
If n And 128 Then MidB$(ByteToBits, 1) = "1"
End Function
MsgBox ByteToBits(0)
MsgBox ByteToBits(170)
MsgBox ByteToBits(255)
Example 2: excel vba long 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 ByteToBits(0)
MsgBox LongToBits(293781237)
MsgBox ByteToBits(-1)
Example 3: vba bits to 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
MsgBox BitsToByte("00001100")
MsgBox BitsToByte("10000001")