这就是我如何将任意数据从一种格式转换为另一种格式的方法。
Private Type LongByte
H1 As Byte
H2 As Byte
L1 As Byte
L2 As Byte
End Type
Private Type LongType
L As Long
End Type
Function SwapEndian(ByVal LongData as Long) as Long
Dim TempL As LongType
Dim TempLB As LongByte
Dim TempVar As Long
TempL.L = LongData
LSet TempLB = TempL
'Swap is a subroutine I wrote to swap two variables
Swap TempLB.H1, TempLB.L2
Swap TempLB.H2, TempLB.L1
LSet TempL = TempLB
TempVar = TempL.L
SwapEndian = TempVar
End Function
如果您正在处理 FileIO,那么您可以使用 TempLB 的字节字段
诀窍是使用 LSET 一个不起眼的 VB6 命令
如果您使用的是 .NET,那么执行此过程要容易得多。这里的技巧是使用 MemoryStream 来检索和设置各个字节。现在你可以计算 int16/int32/int64。但是,如果您正在处理浮点数据,则使用 LSET 或 MemoryStream 会更清晰且更易于调试。
如果您使用的是 Framework 1.1 或更高版本,那么您将拥有使用字节数组的 BitConvertor 类。
Private Structure Int32Byte
Public H1 As Byte
Public H2 As Byte
Public L1 As Byte
Public L2 As Byte
Public Function Convert() As Integer
Dim M As New MemoryStream()
Dim bR As IO.BinaryReader
Dim bW As New IO.BinaryWriter(M)
Swap(H1, L2)
Swap(H2, L1)
bW.Write(H1)
bW.Write(H2)
bW.Write(L1)
bW.Write(L2)
M.Seek(0, SeekOrigin.Begin)
bR = New IO.BinaryReader(M)
Convert = bR.ReadInt32()
End Function
End Structure