2017-11-10 9 views
2

byte []をPointに変換できますか?私はキャンバスを持っていて、図はPoint []として得られています。私はそれをデータベースにbyte []として格納し、それを取り出してPoint []として再度ロードする必要があります。byte []をPoint []に変換して戻す

+1

'Point'基本的に2つの整数のタプルです。ですから、最初に 'byte []'を 'int'に変換して、それをPointのシリアライズ/デシリアライズに適用します。 – Rob

答えて

2

あなたはバイトの配列を取得するには、バイナリストリームにあなたのポイントをシリアライズすることができます

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(); 
} 

プロセスを逆に、バック配列にあなたのバイトをデシリアライズするには:

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

部分を再シリアライズするとき=新しいPoint [len]; System.OverflowExceptionをスローします。 '算術演算の結果、オーバーフローが発生しました。可能な修正は何ができますか? –

関連する問題