現在、クラスUsageData
をバイト配列に保存し、ハードウェア キーに保存する作業を行っています。このハードウェア キーには、ユーザー データ用に最大 256 バイトが予約されています。現在、プロパティで満たされたクラスのサイズは約 640 バイトで、既に圧縮されています。UsageDataTemp
ここで、プロパティ/フィールドなしで一時的なクラスを作成しました。バイト配列が値なしでどれだけ大きいかを確認するテストを実行すると、すでに 220 バイトのサイズがあり、あと 36 バイトしか残っていません。
[Serializable]
public class UsageDataTemp
{
public byte[] ToByteArray()
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
//original serialization is 684 bytes long, compress it with the gzipstream
using (var compressionStream = new GZipStream(stream, CompressionMode.Compress))
{
formatter.Serialize(compressionStream, this);
compressionStream.Flush();
return stream.ToArray();
}
}
}
}
値のない空のクラスが、それ自体を保存するためにすでに 220 バイトを必要とするのはなぜですか。また、バイト配列をさらに圧縮する方法はありますか。それとも、自分で作成を開始する必要がありますかBinaryFormatter
。