elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 08:30  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  [pliss] copiar matriz de byte en una estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [pliss] copiar matriz de byte en una estructura  (Leído 210 veces)
_katze_

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
[pliss] copiar matriz de byte en una estructura
« en: 19 Enero 2012, 21:47 »

hola amigos quisiera saber y de que manera podria copiar una matriz de byte en una estructura, intente con marshall pero me da error, y se que rtlmovememory podria pero quisiera ver algo que sea nativo.gracias


En línea
seba123neo


Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: [pliss] copiar matriz de byte en una estructura
« Respuesta #1 en: 20 Enero 2012, 02:41 »

Hola, aca un ejemplo de VB .NET para hacer eso, hay mucha info en internet de esto igual, mucho para C#.

Código
Imports System
Imports System.Runtime.InteropServices
 
Public Class Form1
 
   <StructLayout(LayoutKind.Sequential, Pack:=1)> _
   Private Structure MyStruct
       Public id As Integer
       <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _
       Public text As String
   End Structure
 
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
       'Llenamos la estructura con algunos datos
       Dim msg As MyStruct
       msg.id = 888
       msg.text = "Holaaaaaa1"
 
       'La convertimos a Bytes
       Dim bytes As Byte() = StructToByteArray(msg)
 
       'Convertimos el array de bytes a la estructura nuevamente
       Dim msg2 As MyStruct = ByteArrayToStruct(bytes)
       MsgBox(msg2.id)
       MsgBox(msg2.text)
 
   End Sub
 
   Private Function ByteArrayToStruct(ByVal bytes As Byte()) As MyStruct
       Dim handle As GCHandle = GCHandle.Alloc(bytes, GCHandleType.Pinned)
       Dim stuff As MyStruct = DirectCast(Marshal.PtrToStructure(handle.AddrOfPinnedObject(), GetType(MyStruct)), MyStruct)
       handle.Free()
       Return stuff
   End Function
 
   Private Function StructToByteArray(ByVal logFont As MyStruct) As Byte()
       Dim length As Integer = Marshal.SizeOf(logFont)
       Dim ptPoint As IntPtr = Marshal.AllocHGlobal(length)
       Marshal.StructureToPtr(logFont, ptPoint, True)
       Dim bff As Byte() = New Byte(length - 1) {}
       Marshal.Copy(ptPoint, bff, 0, length)
       Marshal.FreeHGlobal(ptPoint)
       Return bff
   End Function
End Class
 


En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
_katze_

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: [pliss] copiar matriz de byte en una estructura
« Respuesta #2 en: 20 Enero 2012, 04:34 »

leo pruebo y te digo, gracias, la verdad no encontre pero lo mas seguro busque mal.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines