コード例 #1
0
 // uint16
 public static bool read(bintalk.IReader r, ref ushort v, uint maxValue)
 {
     byte[] data; int startId;
     if (!r.read(2, out data, out startId))
     {
         return(false);
     }
     v = BitConverter.ToUInt16(data, startId);
     return(true);
 }
コード例 #2
0
 // float
 public static bool read(bintalk.IReader r, ref float v, uint maxValue)
 {
     byte[] data; int startId;
     if (!r.read(4, out data, out startId))
     {
         return(false);
     }
     v = BitConverter.ToSingle(data, startId);
     return(true);
 }
コード例 #3
0
 // bool
 public static bool read(bintalk.IReader r, ref bool v, uint maxValue)
 {
     byte[] data; int startId;
     if (!r.read(1, out data, out startId))
     {
         return(false);
     }
     v = (data[startId] == 0)?false:true;
     return(true);
 }
コード例 #4
0
 // int8
 public static bool read(bintalk.IReader r, ref sbyte v, uint maxValue)
 {
     byte[] data; int startId;
     if (!r.read(1, out data, out startId))
     {
         return(false);
     }
     v = (sbyte)data[startId];
     return(true);
 }
コード例 #5
0
        // string.
        public static bool read(bintalk.IReader r, ref string v, uint maxValue)
        {
            uint s;

            if (!readDynSize(r, out s) || s > maxValue)
            {
                return(false);
            }
            byte[] data; int startId;
            if (!r.read(s, out data, out startId))
            {
                return(false);
            }
            v = Encoding.UTF8.GetString(data, startId, (int)s);
            return(true);
        }
コード例 #6
0
        // binary.
        public static bool read(bintalk.IReader r, ref byte[] v, uint maxValue)
        {
            uint s;

            if (!readDynSize(r, out s) || s > maxValue)
            {
                return(false);
            }
            v = new byte[s];
            byte[] data; int startId;
            if (!r.read(s, out data, out startId))
            {
                return(false);
            }
            Array.Copy(data, startId, v, 0, s);
            return(true);
        }
コード例 #7
0
        // dynamic size.
        public static bool readDynSize(bintalk.IReader r, out uint s)
        {
            s = 0;
            byte b = 0;

            if (!read(r, ref b, 0))
            {
                return(false);
            }
            uint n = (uint)((b & 0XC0) >> 6);

            s = (uint)(b & 0X3F);
            for (int i = 0; i < n; i++)
            {
                if (!read(r, ref b, 0))
                {
                    return(false);
                }
                s = (s << 8) | b;
            }
            return(true);
        }
コード例 #8
0
 public static bool readMid(bintalk.IReader r, ref ushort v)
 {
     return(read(r, ref v, 0));
 }