저는 UsageData
클래스를 바이트 배열로 저장하고 하드웨어 키에 저장하려고합니다. 이 하드웨어 키는 사용자 데이터에 대해 최대 256 바이트를 예약했습니다. 현재 속성이있는 채워진 클래스에는 이미 압축 된 640 바이트 크기가 있습니다. 이제 모든 속성/fiels없이 임시 클래스 UsageDataTemp
을 만들었습니다. 테스트를 실행하여 바이트 배열이 어떤 값없이 얼마나 큰지 확인하고 이미 220 바이트의 크기를 가지며 채우기 위해 36 바이트 만 남겨 둡니다.어떤 값도없이 클래스를 바이트 배열로 변환하는 것은 이미 내 256 개의 사용 가능한 바이트 중 220 바이트를 포함합니다.
[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
.