Exemple #1
0
        internal PsbNumber(PsbObjType objType, BinaryReader br)
        {
            Data       = new byte[8];
            NumberType = PsbNumberType.Int;

            switch (objType)
            {
            case PsbObjType.NumberN0:
                IntValue = 0;
                return;

            case PsbObjType.NumberN1:
                Data = br.ReadBytes(1).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN2:
                Data = br.ReadBytes(2).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN3:
                Data = br.ReadBytes(3).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN4:
                Data = br.ReadBytes(4).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN5:
                Data = br.ReadBytes(5).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN6:
                Data = br.ReadBytes(6).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN7:
                Data = br.ReadBytes(7).UnzipNumberBytes();
                return;

            case PsbObjType.NumberN8:
                Data = br.ReadBytes(8).UnzipNumberBytes();
                return;

            case PsbObjType.Float0:
                NumberType = PsbNumberType.Float;
                //Data = br.ReadBytes(1);
                Data = BitConverter.GetBytes(0.0f);
                return;

            case PsbObjType.Float:
                NumberType = PsbNumberType.Float;
                Data       = br.ReadBytes(4);
                return;

            case PsbObjType.Double:
                NumberType = PsbNumberType.Double;
                Data       = br.ReadBytes(8);
                return;
            }
        }
Exemple #2
0
        public static PsbNumber Zero => new PsbNumber(0); //always create a new PsbNumber to prevent value modified!

        internal PsbNumber(PsbObjType objType, BinaryReader br)
        {
            switch (objType)
            {
            case PsbObjType.NumberN0:
            case PsbObjType.NumberN1:
            case PsbObjType.NumberN2:
            case PsbObjType.NumberN3:
            case PsbObjType.NumberN4:
                NumberType = PsbNumberType.Int;
                Data       = new byte[4];
                break;

            case PsbObjType.NumberN5:
            case PsbObjType.NumberN6:
            case PsbObjType.NumberN7:
            case PsbObjType.NumberN8:
                NumberType = PsbNumberType.Long;
                Data       = new byte[8];
                break;

            case PsbObjType.Float0:
            case PsbObjType.Float:
                NumberType = PsbNumberType.Float;
                break;

            case PsbObjType.Double:
                NumberType = PsbNumberType.Double;
                break;

            default:
                break;
                //throw new ArgumentOutOfRangeException(nameof(objType), objType, null);
            }

            switch (objType)
            {
            case PsbObjType.NumberN0:
                IntValue = 0;
                return;

            case PsbObjType.NumberN1:
                br.ReadAndUnzip(1, Data);
                return;

            case PsbObjType.NumberN2:
                br.ReadAndUnzip(2, Data);
                return;

            case PsbObjType.NumberN3:
                br.ReadAndUnzip(3, Data);
                return;

            case PsbObjType.NumberN4:
                br.ReadAndUnzip(4, Data);
                return;

            case PsbObjType.NumberN5:
                br.ReadAndUnzip(5, Data);
                return;

            case PsbObjType.NumberN6:
                br.ReadAndUnzip(6, Data);
                return;

            case PsbObjType.NumberN7:
                br.ReadAndUnzip(7, Data);
                return;

            case PsbObjType.NumberN8:
                br.ReadAndUnzip(8, Data);
                return;

            case PsbObjType.Float0:
                Data = BitConverter.GetBytes(0.0f);
                return;

            case PsbObjType.Float:
                Data = br.ReadBytes(4);
                return;

            case PsbObjType.Double:
                Data = br.ReadBytes(8);
                return;
            }
        }