예제 #1
0
        public void WriteVarLong(double param1)
        {
            uint _loc3_ = 0;

            Types.Int64 _loc2_ = Types.Int64.fromNumber(param1);
            if (_loc2_.high == 0)
            {
                this.WriteInt32(_loc2_.low);
            }
            else
            {
                _loc3_ = 0;
                while (_loc3_ < 4)
                {
                    this.WriteByte((byte)(_loc2_.low & 127 | 128));
                    _loc2_.low = _loc2_.low >> 7;
                    _loc3_++;
                }
                if ((_loc2_.high & 268435455 << 3) == 0)
                {
                    this.WriteByte((byte)(_loc2_.high << 4 | _loc2_.low));
                }
                else
                {
                    this.WriteByte((byte)((_loc2_.high << 4 | _loc2_.low) & 127 | 128));
                    this.WriteInt32((uint)(_loc2_.high >> 3));
                }
            }
        }
예제 #2
0
        private Types.Int64 ReadInt64()
        {
            uint _loc3_ = 0;

            Types.Int64 _loc2_ = new Types.Int64();
            uint        _loc4_ = 0;

            while (true)
            {
                _loc3_ = ReadByte();
                if (_loc4_ == 28)
                {
                    break;
                }
                if (_loc3_ >= 128)
                {
                    _loc2_.low = _loc2_.low | (uint)((byte)(_loc3_ & 127) << (byte)_loc4_);
                    _loc4_     = _loc4_ + 7;
                    continue;
                }
                _loc2_.low = _loc2_.low | (uint)((byte)_loc3_ << (byte)_loc4_);
                return(_loc2_);
            }
            if (_loc3_ >= 128)
            {
                _loc3_      = _loc3_ & 127;
                _loc2_.low  = _loc2_.low | (uint)((byte)_loc3_ << (byte)_loc4_);
                _loc2_.high = (byte)_loc3_ >> 4;
                _loc4_      = 3;
                while (true)
                {
                    _loc3_ = ReadByte();
                    if (_loc4_ < 32)
                    {
                        if (_loc3_ >= 128)
                        {
                            _loc2_.high = _loc2_.high | (byte)(_loc3_ & 127) << (byte)_loc4_;
                        }
                        else
                        {
                            break;
                        }
                    }
                    _loc4_ = _loc4_ + 7;
                }
                _loc2_.high = _loc2_.high | (byte)_loc3_ << (byte)_loc4_;
                return(_loc2_);
            }
            _loc2_.low  = _loc2_.low | (uint)((byte)_loc3_ << (byte)_loc4_);
            _loc2_.high = (byte)_loc3_ >> 4;
            return(_loc2_);
        }