コード例 #1
0
 private static byte[] FromFloat(object value, int order)
 {
     if (value is double d || double.TryParse(value.ToString(), out d))
     {
         return(ProtoBufSerializer.GetData(d, order));
     }
     return(null);
 }
コード例 #2
0
 private static byte[] FromBool(object value, int order)
 {
     if (value is bool b || bool.TryParse(value.ToString(), out b))
     {
         return(ProtoBufSerializer.GetData(b, order));
     }
     return(null);
 }
コード例 #3
0
 private static byte[] FromUint32(object value, int order)
 {
     if (value is uint v1 || uint.TryParse(value.ToString(), out v1))
     {
         return(ProtoBufSerializer.GetData(v1, order));
     }
     return(null);
 }
コード例 #4
0
        static void MemoryWriter()
        {
            var typeModel = RuntimeTypeModel.Create();

            var ms     = new MemoryStream();
            var writer = ProtoWriter.State.Create(ms, typeModel);

            // Int - 5, 500
            writer.WriteFieldHeader(5, WireType.Varint);
            writer.WriteInt32(500);
            writer.Flush();
            ms.Position = 0;
            var data = ms.ToArray();

            ms.Close();
            ms.Dispose();
            ms = null;
            Print(1);

            var value1 = new ValueDemo()
            {
                Value = 500
            };

            data = ProtoBufSerializer.Serialize(value1);
            Print(2);

            data = ProtoBufHelper.GetData(500, "int32", 5);
            Print(3);

            // UInt32 - 4, Uint.MaxValue
            ms     = new MemoryStream();
            writer = ProtoWriter.State.Create(ms, typeModel);
            writer.WriteFieldHeader(4, WireType.Varint);
            writer.WriteUInt32(uint.MaxValue);
            writer.Flush();
            ms.Position = 0;
            data        = ms.ToArray();
            ms.Close();
            ms.Dispose();
            ms = null;
            Print(4);

            value1 = new ValueDemo()
            {
                Values = UInt32.MaxValue
            };
            data = ProtoBufSerializer.Serialize(value1);
            Print(5);

            data = ProtoBufHelper.GetData(UInt32.MaxValue, "uint32", 4);
            Print(6);

            // Boolean, 300 - true
            ms     = new MemoryStream();
            writer = ProtoWriter.State.Create(ms, typeModel);
            writer.WriteFieldHeader(3, WireType.Varint);
            writer.WriteBoolean(true);
            writer.Flush();
            ms.Position = 0;
            data        = ms.ToArray();
            ms.Close();
            ms.Dispose();
            ms = null;
            Print(7);

            value1 = new ValueDemo {
                Success = true
            };
            data = ProtoBufSerializer.Serialize(value1);
            Print(8);

            data = ProtoBufHelper.GetData(true, "bool", 3);
            Print(9);

            // String
            var s = "Hello World!哈罗!";

            ms     = new MemoryStream();
            writer = ProtoWriter.State.Create(ms, typeModel);
            writer.WriteFieldHeader(6, WireType.String);
            writer.WriteString(s);
            writer.Flush();
            ms.Position = 0;
            data        = ms.ToArray();
            ms.Close();
            ms.Dispose();
            ms = null;
            Print(10);

            value1 = new ValueDemo {
                Str = s
            };
            data = ProtoBufSerializer.Serialize(value1);
            Print(11);

            data = ProtoBufHelper.GetData(s, "string", 6);
            Print(12);

            // double
            var d = 105.5D;

            ms     = new MemoryStream();
            writer = ProtoWriter.State.Create(ms, typeModel);
            writer.WriteFieldHeader(7, WireType.Varint);
            writer.WriteDouble(d);
            writer.Flush();
            ms.Position = 0;
            data        = ms.ToArray();
            ms.Close();
            ms.Dispose();
            ms = null;
            Print(13);

            value1 = new ValueDemo {
                Measure = d
            };
            data = ProtoBufSerializer.Serialize(value1);
            Print(14);

            data = ProtoBufHelper.GetData(s, "double", 7);
            Print(15);

            void Print(int i)
            {
                Console.WriteLine($"{i}: {BitConverter.ToString(data)}");
            }
        }
コード例 #5
0
        private static byte[] FromString(object value, int order)
        {
            var s = value.ToString();

            return(ProtoBufSerializer.GetData(s, order));
        }