シリアル化:
bool[] tempArray = new bool[MapWidth * MapHeight];
for (int i = 0; i < MapWidth; i++)
{
for (int ii = 0; ii < MapHeight; ii++)
{
tempArray[i * ii] = mapSolid[i, ii];
}
}
BitArray bits = new BitArray(tempArray);
byte[] bytes = new byte[32 * MapWidth];
bits.CopyTo(bytes, 0);
bin.Serialize(stream, Convert.ToBase64String(bytes));
Desrialization:
byte[] bytes = new byte[255 * 255];
bytes=Convert.FromBase64String((string)bin.Deserialize(stream));
//mapSolid = ;
MapWidth = (int)bin.Deserialize(stream);
MapHeight = (int)bin.Deserialize(stream);
BitArray bits = new BitArray(bytes);
bool[] bytestemp = new bool[255*265];
bits.CopyTo(bytestemp, 0);
for (int i = 0; i < MapWidth; i++)
{
for (int ii = 0; ii < MapHeight; ii++)
{
mapSolid[i, ii] = bytestemp[i*ii];
}
}
これで、すべてがエラーなしで機能しているように見えますが、逆シリアル化後にマップの構造が失われます。