Podrías probar 'empaquetando' los datos con algo así:
Public Enum ByteOrderEnum
LittleEndianByteOrder = 0 'Primero el byte menos significativo
BigEndianByteOrder = 1 'Primero el byte más significativo
End Enum
Public Sub PackNro(ByVal Valor As Long, bytRes() As Byte, Byval ByteOrder as ByteOrderEnum)
Dim byt1(1 To 4) As Byte
Dim intMaxExp As Integer
ReDim bytRes(1 To 4)
Valor = Abs(Valor)
byt1(1) = 0
byt1(2) = 0
byt1(3) = 0
byt1(4) = 0
Do While intMaxExp <= 4
If Int(Valor / 256 ^ intMaxExp) > 255 Then
intMaxExp = intMaxExp + 1
ElseIf intMaxExp = 0 Then
byt1(1) = Valor
GoTo Salir_PackLong
Else
Exit Do
End If
Loop
Do Until Valor = 0
byt1(intMaxExp + 1) = Int(Valor / 256 ^ intMaxExp)
Valor = Valor - byt1(intMaxExp + 1) * 256 ^ intMaxExp
intMaxExp = intMaxExp - 1
Loop
Salir_PackLong:
If byteOrder = LittleEndianByteOrder Then
bytRes = byt1
Else
bytRes(1) = byt1(4)
bytRes(2) = byt1(3)
bytRes(3) = byt1(2)
bytRes(4) = byt1(1)
End If
End Sub
Ya contarás a ver que tal.
Suerte.