Пример #1
0
        public static float UnpackDirect(Packer packer)
        {
            var size = packer.ReadByte();
            var res  = new FloatBytes()
            {
                b1 = (size >= 1 ? packer.ReadByte() : byte.MinValue),
                b2 = (size >= 2 ? packer.ReadByte() : byte.MinValue),
                b3 = (size >= 3 ? packer.ReadByte() : byte.MinValue),
                b4 = (size >= 4 ? packer.ReadByte() : byte.MinValue)
            };

            return(res.value);
        }
Пример #2
0
        public static void PackDirect(Packer packer, float obj)
        {
            var b = new FloatBytes()
            {
                value = obj
            };
            byte size = 4;

            if (b.b4 == 0)
            {
                --size;
            }
            if (b.b4 == 0 && b.b3 == 0)
            {
                --size;
            }
            if (b.b4 == 0 && b.b3 == 0 && b.b2 == 0)
            {
                --size;
            }
            if (b.b4 == 0 && b.b3 == 0 && b.b2 == 0 && b.b1 == 0)
            {
                --size;
            }
            packer.WriteByte(size);
            if (size >= 1)
            {
                packer.WriteByte(b.b1);
            }
            if (size >= 2)
            {
                packer.WriteByte(b.b2);
            }
            if (size >= 3)
            {
                packer.WriteByte(b.b3);
            }
            if (size >= 4)
            {
                packer.WriteByte(b.b4);
            }
        }
Пример #3
0
            public static void Write(float value, byte[] bytes)
            {
                var floatBytes = new FloatBytes {
                    _value = value
                };

                if (System.BitConverter.IsLittleEndian)
                {
                    bytes[0] = floatBytes._byte3;
                    bytes[1] = floatBytes._byte2;
                    bytes[2] = floatBytes._byte1;
                    bytes[3] = floatBytes._byte0;
                }
                else
                {
                    bytes[0] = floatBytes._byte0;
                    bytes[1] = floatBytes._byte1;
                    bytes[2] = floatBytes._byte2;
                    bytes[3] = floatBytes._byte3;
                }
            }
Пример #4
0
            public static float Read(byte[] bytes)
            {
                var floatBytes = new FloatBytes();

                if (System.BitConverter.IsLittleEndian)
                {
                    floatBytes._byte0 = bytes[3];
                    floatBytes._byte1 = bytes[2];
                    floatBytes._byte2 = bytes[1];
                    floatBytes._byte3 = bytes[0];
                }
                else
                {
                    floatBytes._byte0 = bytes[0];
                    floatBytes._byte1 = bytes[1];
                    floatBytes._byte2 = bytes[2];
                    floatBytes._byte3 = bytes[3];
                }

                return(floatBytes._value);
            }
Пример #5
0
 public void WriteSingle(float value)
 {
     FloatBytes.Write(value, _tempBuffer);
     Flush(_tempBuffer, 0, 4);
 }
Пример #6
0
 public float ReadSingle()
 {
     Load(_tempBuffer, 4);
     return(FloatBytes.Read(_tempBuffer));
 }