
Artículo: Q171652
Este artículo muestra cómo copiar los bytes individuakes de un tipo multibyte, como un long o un single, en un array de byte. También se ve cómo coger un array de bytes y copiarlo en un tipo de datos específico que Visual Basic pueda reconocer.
Declaramos :
Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal numbytes As Long)
Un long tiene cuatro bytes. Usaremos la siguiente subrutina para copiar los bytes indiiduales en una matriz de bytes:
Public Sub LongToBytes(ByRef TheArray() As Byte, ByRef TheLong As Long)
Call CopyMemory(TheArray(LBound(TheArray)), TheLong, 4)
End Sub
El primer parámetro pasado a a CopyMemory es el primer elemento de la matriz en la que se guardarán los bytes.(a LongToBytes se le pasa la matriz entera).
El segundo parámetro es la variable origen.
El tercer parámetro indica cuántos bytes se deben copiar. En este caso son cuatro.
Para volver a copiar los bytes de la matriz en la variable long usaremos el siguiente código:
Public Function BytesToLong(TheArray() As Byte) As Long
Dim TempLong As Long
Call CopyMemory(TempLong, TheArray(LBound(TheArray)), 4)
BytesToLong = TempLong
End Function

