コード例 #1
0
ファイル: Tag.cs プロジェクト: attackgithub/QSharp
        /** Queues pending data to be written on next cycle. (only valid if start() has been called). */
        public void SetValue(String value)
        {
            byte[] data = null;
            if (IsBE())
            {
                switch (Size)
                {
                case TagType.Bit: data = new byte[] { (byte)(value.Equals("0") ? 0 : 1) }; break;

                case TagType.Int8: data = new byte[] { Byte.ValueOf(value) }; break;

                case TagType.Int16: data = new byte[2]; BE.setuint16(data, 0, Int32.ValueOf(value)); break;

                case TagType.Int32: data = new byte[4]; BE.setuint32(data, 0, Int32.ValueOf(value)); break;

                case TagType.Float32: data = new byte[4]; BE.setuint32(data, 0, Float.FloatToIntBits(Float.ValueOf(value))); break;

                case TagType.Float64: data = new byte[4]; BE.setuint64(data, 0, Double.DoubleToLongBits(Double.ValueOf(value))); break;
                }
            }
            else
            {
                switch (Size)
                {
                case TagType.Bit: data = new byte[] { (byte)(value.Equals("0") ? 0 : 1) }; break;

                case TagType.Int8: data = new byte[] { Byte.ValueOf(value) }; break;

                case TagType.Int16: data = new byte[2]; LE.setuint16(data, 0, Int32.ValueOf(value)); break;

                case TagType.Int32: data = new byte[4]; LE.setuint32(data, 0, Int32.ValueOf(value)); break;

                case TagType.Float32: data = new byte[4]; LE.setuint32(data, 0, Float.FloatToIntBits(Float.ValueOf(value))); break;

                case TagType.Float64: data = new byte[4]; LE.setuint64(data, 0, Double.DoubleToLongBits(Double.ValueOf(value))); break;
                }
            }
            lock (pendingLock) {
                pending = data;
            }
        }