class CompressedInt64Serializer (Niantic.ARDK.Utilities.BinarySerialization.ItemSerializers.CompressedInt64Serializer)
Overview
class CompressedInt64Serializer: Niantic.ARDK.Utilities.BinarySerialization.ItemSerializers.BaseItemSerializer { public: // fields static readonly CompressedInt64Serializer Instance = new CompressedInt64Serializer(); // methods static Int64 ReadCompressedInt64(Stream stream); static void WriteCompressedInt64(Stream stream, Int64 value); };
Inherited Members
public: // properties Type DataType; // methods object Deserialize(BinaryDeserializer deserializer); T Deserialize(BinaryDeserializer deserializer); void Serialize(BinarySerializer serializer, object item); void Serialize(BinarySerializer serializer, T item); T Deserialize(BinaryDeserializer deserializer); void Serialize(BinarySerializer serializer, T item);
Detailed Documentation
Methods
static void WriteCompressedInt64(Stream stream, Int64 value)
Writes an Int64 value in "compressed" format. This uses the UInt64 compression logic, with an extra twist. -1 has all bytes set, meaning that if we just want to use the "compression" on it, it will occupy 10 bytes. So, instead, we shift the sign bit to the right and invert all the bits when a value is negative. In this way, the values 0, -1, 1, -2, 2, -3, 3 etc are actually written as 0, 1, 2, 3, 4, 5, 6, keeping just one byte instead of 4 (no compression) or 10 (bad compression for negatives).