转自OFFICE中国 gnoy
'Adapt By:Gnoy
'-------------------------------------------------------------------------
Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal length As Long)
Public Function ByteArrayAsBin(ByVal b As Variant) As String
Dim z As Long
Dim u As Long
u = UBound(b)
For z = 0 To u
ByteArrayAsBin = ByteArrayAsBin & ByteAsBin(b(z))
If z <> u Then
If (z + 1) Mod 4 = 0 Then
ByteArrayAsBin = ByteArrayAsBin & vbNewLine
Else
ByteArrayAsBin = ByteArrayAsBin & " "
End If
End If
Next z
End Function
Public Function ByteAsBin(ByVal b As Byte) As String
Dim z As Long
For z = 7 To 0 Step -1
ByteAsBin = ByteAsBin & Abs(CLng(CBool(b And (2 ^ z))))
Next z
End Function
Public Function CurrencyAsBin(ByVal c As Currency) As String
Dim b(7) As Byte
CopyMemory b(0), c, 8
CurrencyAsBin = ByteArrayAsBin(b)
End Function
Public Function DateAsBin(ByVal d As Date) As String
Dim b(7) As Byte
CopyMemory b(0), d, 8
DateAsBin = ByteArrayAsBin(b)
End Function
Public Function DoubleAsBin(ByVal d As Double) As String
Dim b(7) As Byte
CopyMemory b(0), d, 8
DoubleAsBin = ByteArrayAsBin(b)
End Function
Public Function IntegerAsBin(ByVal i As Integer) As String
Dim b(1) As Byte
CopyMemory b(0), i, 2
IntegerAsBin = ByteArrayAsBin(b)
End Function
Public Function LongAsBin(ByVal l As Long) As String
Dim b(3) As Byte
CopyMemory b(0), l, 4
LongAsBin = ByteArrayAsBin(b)
End Function
Public Function SingleAsBin(ByVal s As Single) As String
Dim b(3) As Byte
CopyMemory b(0), s, 4
SingleAsBin = ByteArrayAsBin(b)
End Function
Public Function StringAsBin(ByVal s As String) As String
Dim b() As Byte
Dim z As Long
Dim u As Long
b = StrConv(s, vbFromUnicode)
StringAsBin = ByteArrayAsBin(b)
End Function
Access软件网交流QQ群(群号:198465573) |