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); }
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); } }
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; } }
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); }
public void WriteSingle(float value) { FloatBytes.Write(value, _tempBuffer); Flush(_tempBuffer, 0, 4); }
public float ReadSingle() { Load(_tempBuffer, 4); return(FloatBytes.Read(_tempBuffer)); }