vba long integer to bits code example
Example 1: excel-vba long integer value 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: excel vba make long from two shorts
Public Function MakeLong&(ByVal LoWord%, ByVal HiWord%)
MakeLong = (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function
Example 3: vba binary string to long integer
'Fast VBA function to converst binary string to a Long Integer:
Function BitsToLong&(bits$)
Dim i&
Static b() As Byte
If LenB(bits) > 64 Then Exit Function
If LenB(bits) = 64 Then
b = bits
Else
b = String$(32 - Len(bits), "0") & bits
End If
For i = 2 To 62 Step 2
BitsToLong = 2 * BitsToLong Or (b(i) Xor 48)
Next
If (b(0) Xor 48) Then BitsToLong = BitsToLong Or &H80000000
End Function
'-----------------------------------------------------------------------------
MsgBox BitsToLong("1") '<--displays: 1
MsgBox BitsToLong("10") '<--displays: 2
MsgBox BitsToLong("0110") '<--displays: 6
MsgBox BitsToLong("0100101") '<--displays: 37
MsgBox BitsToLong("100000000000000000000") '<--displays: 1048576
MsgBox BitsToLong("11111111111111111111111111111111") '<--displays: -1
Example 4: 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
Example 5: excel vba binary string to long integer
'Fast VBA function to convert binary string to a Long Integer:
Function BitsToLong&(bits$)
Dim i&
Static b() As Byte
If LenB(bits) > 64 Then Exit Function
If LenB(bits) = 64 Then
b = bits
Else
b = String$(32 - Len(bits), "0") & bits
End If
For i = 2 To 62 Step 2
BitsToLong = 2 * BitsToLong Or (b(i) Xor 48)
Next
If (b(0) Xor 48) Then BitsToLong = BitsToLong Or &H80000000
End Function
'-----------------------------------------------------------------------------
MsgBox BitsToLong("1") '<--displays: 1
MsgBox BitsToLong("10") '<--displays: 2
MsgBox BitsToLong("0110") '<--displays: 6
MsgBox BitsToLong("0100101") '<--displays: 37
MsgBox BitsToLong("100000000000000000000") '<--displays: 1048576
MsgBox BitsToLong("11111111111111111111111111111111") '<--displays: -1