コード例 #1
0
        public void RoundTripZigZag64()
        {
            Assert.AreEqual(0, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(0)));
            Assert.AreEqual(1, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(1)));
            Assert.AreEqual(-1, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-1)));
            Assert.AreEqual(14927, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(14927)));
            Assert.AreEqual(-3612, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-3612)));

            Assert.AreEqual(856912304801416L,
                            ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(856912304801416L)));
            Assert.AreEqual(-75123905439571256L,
                            ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-75123905439571256L)));
        }
コード例 #2
0
 public void EncodeZigZag64()
 {
     Assert.AreEqual(0u, WritingPrimitives.EncodeZigZag64(0));
     Assert.AreEqual(1u, WritingPrimitives.EncodeZigZag64(-1));
     Assert.AreEqual(2u, WritingPrimitives.EncodeZigZag64(1));
     Assert.AreEqual(3u, WritingPrimitives.EncodeZigZag64(-2));
     Assert.AreEqual(0x000000007FFFFFFEuL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0x000000003FFFFFFFUL)));
     Assert.AreEqual(0x000000007FFFFFFFuL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0xFFFFFFFFC0000000UL)));
     Assert.AreEqual(0x00000000FFFFFFFEuL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0x000000007FFFFFFFUL)));
     Assert.AreEqual(0x00000000FFFFFFFFuL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0xFFFFFFFF80000000UL)));
     Assert.AreEqual(0xFFFFFFFFFFFFFFFEL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0x7FFFFFFFFFFFFFFFUL)));
     Assert.AreEqual(0xFFFFFFFFFFFFFFFFL,
                     WritingPrimitives.EncodeZigZag64(unchecked ((long)0x8000000000000000UL)));
 }
 /// <summary>
 /// Computes the number of bytes that would be needed to encode an
 /// sint64 field, including the tag.
 /// </summary>
 public static int ComputeSInt64Size(long value)
 {
     return(ComputeRawVarint64Size(WritingPrimitives.EncodeZigZag64(value)));
 }