Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: claus86 en 7 Marzo 2010, 01:34 am



Título: de byte a long
Publicado por: claus86 en 7 Marzo 2010, 01:34 am
Hola como estan?  :D
necesito que me ayuden, yo quiero pasar de byte a long por ejemplo yo tengo este numero 48 en byte y se que este 94545712 es ese byte pasado a long alguien me podria explicar como hago para pasar el byte que quiera a long?


Título: Re: de byte a long
Publicado por: skapunky en 7 Marzo 2010, 02:12 am
Te pondría el código pero tengo el visual basic en el pc de torre y estoy en el portátil, de todas formas te dejo un enlace que no solo hay ejemplos de funciónes con lo que quieres sinó viceversa y muchas más:

http://www.bigresource.com/VB-Help-converting-long-to-byte-array-and-byte-array-to-long-GwlkH2pMTT.html

Espero que te sirva de inspiración  ;)


Título: Re: de byte a long
Publicado por: claus86 en 7 Marzo 2010, 15:35 pm
Gracias por el link pude pasar de long a byte con este codigo

Código:
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal _
Length As Long)

Public Function LongToByteArray(ByVal lng As Long) As Byte()

Dim ByteArray(0 To 2) As Byte
CopyMemory ByteArray(2), ByVal VarPtr(lng), Len(lng)
LongToByteArray = ByteArray

End Function

Private Sub Command1_Click()
Dim bytArr() As Byte
Dim iCtr As Integer
bytArr = LongToByteArray(94148488)
For iCtr = 0 To UBound(bytArr)
Text1.Text = bytArr(iCtr)
Next
End Sub

pero no logro pasar de byte a long  >:(


Título: Re: de byte a long
Publicado por: LeandroA en 7 Marzo 2010, 18:27 pm
Hola me parece que tu funcion esta mal, un long  = 4 bytes por lo tanto tienes que redimencionar el array a  (0 to 3)

asi es como creo que iria

Código:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function LongToByteArray(ByVal lng As Long) As Byte()
    Dim ByteArray(3) As Byte
    CopyMemory ByteArray(0), lng, LenB(lng)
    LongToByteArray = ByteArray
End Function

Public Function ByteArrayToLong(ByteArray() As Byte) As Long
    CopyMemory ByteArrayToLong, ByteArray(0), LenB(ByteArrayToLong)
End Function


Private Sub Command1_Click()
    Dim bytArr() As Byte
    bytArr = LongToByteArray(94545712)
    MsgBox ByteArrayToLong(bytArr)
End Sub


Saludos.