コード例 #1
0
        public IEnumerable <byte> GetDataCopy(DataWord offsetData, DataWord lengthData)
        {
            var offset = offsetData.GetValue().IntValue;
            var length = lengthData.GetValue().IntValue;

            byte[] data = new byte[length];
            if (_msgDataRaw == null)
            {
                return(data);
            }

            if (offset > _msgDataRaw.Count())
            {
                return(data);
            }

            var res = _msgDataRaw.Skip(offset).Take(length).ToList();
            var mod = res.Count % _size;

            if (mod != 0)
            {
                for (int i = 0; i < (_size - mod); i++)
                {
                    res.Add(0);
                }
            }

            return(res);
        }
コード例 #2
0
        public DataWord GetDataValue(DataWord indexData)
        {
            byte[] data  = new byte[_size];
            var    index = indexData.GetValue().IntValue;
            int    size  = _size;

            if (_msgDataRaw == null)
            {
                return(new DataWord(data));
            }

            if (index > _msgDataRaw.Count())
            {
                return(new DataWord(data));
            }

            if (index + _size > _msgDataRaw.Count())
            {
                size = _msgDataRaw.Count() - index;
            }

            var res = _msgDataRaw.Skip(index).Take(size).ToList();

            for (int i = res.Count(); i < _size; i++)
            {
                res.Add(0);
            }

            return(new DataWord(res.ToArray()));
        }
コード例 #3
0
        public void Div(DataWord word)
        {
            if (word.IsZero())
            {
                this.And(ZERO);
                return;
            }

            BigInteger result = GetValue().Divide(word.GetValue());

            _data = ByteUtil.CopyToArray(result.And(MAX_VALUE));
        }
コード例 #4
0
 private static BigInteger MemNeeded(DataWord offset, DataWord size)
 {
     return(size.IsZero() ? BigInteger.Zero : offset.GetValue().Add(size.GetValue()));
 }
コード例 #5
0
        public void Exp(DataWord word)
        {
            var result = GetValue().ModPow(word.GetValue(), _2_256);

            _data = ByteUtil.CopyToArray(result);
        }
コード例 #6
0
        public void Sub(DataWord word)
        {
            BigInteger result = GetValue().Subtract(word.GetValue());

            _data = ByteUtil.CopyToArray(result.And(MAX_VALUE));
        }
コード例 #7
0
        public void Mul(DataWord word)
        {
            BigInteger result = GetValue().Multiply(word.GetValue());

            _data = ByteUtil.CopyToArray(result.And(MAX_VALUE));
        }