2017-11-10 1 views
2

Ist es möglich, byte [] in Point umzuwandeln? Ich habe eine Leinwand und die Zeichnung als Point [] erhalten; Ich muss es in der Datenbank als Byte [] speichern und dann abrufen und erneut als Point [] laden.Byte umwandeln [] nach Punkt [] und zurück

+1

A 'Point' ist im Wesentlichen nur ein Tupel von zwei ganzen Zahlen. Suchen Sie also zuerst, wie man ein 'byte []' in ein 'int' konvertiert und wendet es auf das Serialisieren/Deserialisieren eines Punktes an. – Rob

Antwort

2

Sie können Ihre Punkte in einen binären Stream serialisiert ein Array von Bytes zu erhalten:

byte[] data; 
using (var ms = new MemoryStream()) { 
    using (var bw = new BinaryWriter(ms)) { 
     bw.Write(points.Length); 
     foreach (var p in points) { 
      bw.Write(p.X); 
      bw.Write(p.Y); 
     } 
    } 
    data = ms.ToArray(); 
} 

Um die Bytes wieder in ein Array deserialisieren in umgekehrter Prozess:

Point[] points; 
using (var ms = new MemoryStream(data)) { 
    using (var r = new BinaryReader(ms)) { 
     int len = r.ReadInt32(); 
     points = new Point[len]; 
     for (int i = 0 ; i != len ; i++) { 
      points[i] = new Point(r.ReadInt32(), r.ReadInt32()); 
     } 
    } 
} 
+0

Bei der Reserialisierung an den Teilpunkten = neuer Punkt [len]; es wirft System.OverflowException: 'Arithmetische Operation führte zu einem Überlauf. Was könnte die mögliche Lösung sein? –

Verwandte Themen