public static float ReadSingle(this BinaryReader reader, TagFieldCompression compression) { switch (compression) { case TagFieldCompression.Int8: return((float)reader.ReadSByte() / sbyte.MaxValue); case TagFieldCompression.Int16: return((float)reader.ReadInt16() / short.MaxValue); default: return(reader.ReadSingle()); } }
public static void Write(this BinaryWriter writer, float value, TagFieldCompression compression) { switch (compression) { case TagFieldCompression.Int8: writer.Write((sbyte)(value * sbyte.MaxValue)); break; case TagFieldCompression.Int16: writer.Write((short)(value * short.MaxValue)); break; default: writer.Write(value); break; } }