Exemple #1
0
        // dynamic size.
        public static void writeDynSize(bintalk.IWriter w, uint s)
        {
            byte[] b = BitConverter.GetBytes(s);
            int    n = 0;

            if (s <= 0X3F)
            {
                n = 0;
            }
            else if (s <= 0X3FFF)
            {
                n = 1;
            }
            else if (s <= 0X3FFFFF)
            {
                n = 2;
            }
            else if (s <= 0X3FFFFFFF)
            {
                n = 3;
            }
            b[n] |= (byte)(n << 6);
            for (int i = n; i >= 0; i--)
            {
                write(w, b[i]);
            }
        }
Exemple #2
0
 // binary.
 public static void write(bintalk.IWriter w, byte[] v)
 {
     if (v == null || v.Length == 0)
     {
         writeDynSize(w, 0);
     }
     else
     {
         uint s = (uint)v.Length;
         writeDynSize(w, s);
         w.write(v);
     }
 }
Exemple #3
0
 // string
 public static void write(bintalk.IWriter w, string v)
 {
     if (v == null || v.Length == 0)
     {
         writeDynSize(w, 0);
     }
     else
     {
         byte[] str = Encoding.UTF8.GetBytes(v);
         uint   len = (uint)str.Length;
         writeDynSize(w, len);
         if (len > 0)
         {
             w.write(str);
         }
     }
 }
Exemple #4
0
 public static void writeMid(bintalk.IWriter w, int v)
 {
     write(w, (ushort)v);
 }
Exemple #5
0
 // bool
 public static void write(bintalk.IWriter w, bool v)
 {
     write(w, (byte)(v?1:0));
 }
Exemple #6
0
 // uint8
 public static void write(bintalk.IWriter w, byte v)
 {
     w.write(new byte[1] {
         v
     });
 }
Exemple #7
0
 // uint16
 public static void write(bintalk.IWriter w, ushort v)
 {
     w.write(BitConverter.GetBytes(v));
 }