Salut à tous, tout en dans le titre, j'aimerai savoir comment convertir un object ou une classe personnaliser en un tableau de byte et après pouvoir reconvertir mon tableau en object. Si quelqu'un peut m'aider![]()
Salut à tous, tout en dans le titre, j'aimerai savoir comment convertir un object ou une classe personnaliser en un tableau de byte et après pouvoir reconvertir mon tableau en object. Si quelqu'un peut m'aider![]()
merci pour la réponse, j'ai été voir quelque tuto et j'ai fait sa
le truc c'est que ma structure mteste2 est vide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Public Structure teste Public nom As String Public prenom As String End Structure Sub Main() Dim ptr As IntPtr Dim MTeste As teste Dim Mbyte() As Byte MTeste.nom = "nom" MTeste.prenom = "prenom" ' on converti MTeste en tableau de byte dans Mbyte ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(MTeste)) ReDim Mbyte(Marshal.SizeOf(MTeste) - 1) Marshal.Copy(ptr, Mbyte, 0, Marshal.SizeOf(MTeste)) Dim mteste2 As teste ' on converti Mbyte en structure teste dans mteste2 Dim MyGC As GCHandle = GCHandle.Alloc(Mbyte, GCHandleType.Pinned) mteste2 = CType(Marshal.PtrToStructure(MyGC.AddrOfPinnedObject, GetType(teste)), teste) MyGC.Free() Console.WriteLine(mteste2.prenom) Console.ReadKey() End Subou du moin rien n'apparait dans la console, je comprend pas trop pourquoi merci de m'aider
Moi je chercherais plutôt du coté de la sérialisation.
Je pense qu'avant d'être un XML ça doit bien passer par un flux (Stream) que l'on peut, je pense, facilement convertir en tableau de byte.
Ce n'est qu'une piste, je n'ai rien testé...
@+
j'ai trouver un code de serialisation en byte() et sa marche bien, mais le seul problème c'est quand je désérialise sur une autre aplication, il ne veux pas charger car elle n'a pas le meme nom d'assemblycomment on fait pour virer le header lors de la sérialisation?
voila le code pour ceux que sa intéresse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 'Convert an object to a byte array Private Function ObjectToByteArray(ByVal obj As Object) As Byte() If obj Is Nothing Then Return Nothing End If Dim bf As BinaryFormatter = New BinaryFormatter Dim ms As MemoryStream = New MemoryStream bf.Serialize(ms, obj) Return ms.ToArray End Function ' Convert a byte array to an Object Private Function ByteArrayToObject(ByVal arrBytes As Byte()) As Object Dim memStream As MemoryStream = New MemoryStream Dim binForm As BinaryFormatter = New BinaryFormatter memStream.Write(arrBytes, 0, arrBytes.Length) memStream.Seek(0, SeekOrigin.Begin) Dim obj As Object = CType(binForm.Deserialize(memStream), Object) Return obj End Function
Partager