VB 长整型和字节数组的转换问题 (Long<>Byte)
Posted by JiaJia 17 March,2009
(0)Comment
用到的API声明:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any,Source As Any,ByVal Length As Long)
Long2Byte
Dim @H_301_21@TempLng As Long
Dim @H_301_21@TempBytes( 0 To 3 @H_301_21@) As Byte
@H_301_21@TempLng = 2000
#If 方法1 Then
@H_301_21@CopyMemory TempBytes( 0 @H_301_21@),TempLng, 4
#ElseIf 方法2 Then
@H_301_21@TempBytes( 0 @H_301_21@) = TempLng And &HFF
@H_301_21@TempBytes( 1 @H_301_21@) = (TempLng And &HFF00 @H_301_21@&) / &H100
@H_301_21@TempBytes( 2 @H_301_21@) = (TempLng And &HFF0000 @H_301_21@) / &H10000
@H_301_21@TempBytes( 3 @H_301_21@) = (TempLng And &H7F000000 @H_301_21@) / &H1000000 Or @H_301_21@(((TempLng And &H80000000 @H_301_21@) <> 0 @H_301_21@) And &H80 @H_301_21@)
#End If
Byte2Long
Dim @H_301_21@l_byte( 0 To 3 @H_301_21@) As Byte '要被转化的Byte()
Dim @H_301_21@l_long As Long '要保存转化的Long
@H_301_21@l_byte( 0 @H_301_21@) = & 1F
@H_301_21@l_byte( 1 @H_301_21@) = & 2F
@H_301_21@l_byte( 2 @H_301_21@) = & 3F
@H_301_21@l_byte( 3 @H_301_21@) = & 4F
@H_301_21@l_long = "&H" @H_301_21@& ( CStr @H_301_21@(Hex(l_byte( 0 @H_301_21@))) & CStr @H_301_21@(Hex(l_byte( 1 @H_301_21@)))) & CStr @H_301_21@(Hex(l_byte( 2 @H_301_21@))) & CStr @H_301_21@(Hex(l_byte( 3 @H_301_21@)))