Пример #1
0
        private static HexString BytesToHex(IReadOnlyList <byte> bytes)
        {
            var hexDigits = new HexDigit[bytes.Count << 1];

            for (var i = 0; i < bytes.Count; ++i)
            {
                var hexByte = bytes[i];

                var firstNibble  = (byte)(hexByte & 0x0f);
                var secondNibble = (byte)(hexByte >> 4);

                var index = i * 2;

                hexDigits[index]     = new HexDigit(secondNibble);
                hexDigits[index + 1] = new HexDigit(firstNibble);
            }

            return(new HexString(hexDigits));
        }
Пример #2
0
        public HexString(string hex)
        {
            _hex    = hex.ToLower();
            _digits = new HexDigit[_hex.Length];

            if (string.IsNullOrEmpty(_hex) || (_hex.Length & 1) != 0)
            {
                throw new InvalidHexStringException();
            }

            for (var i = 0; i < _hex.Length; ++i)
            {
                try
                {
                    _digits[i] = new HexDigit(_hex[i]);
                }
                catch (InvalidHexDigitException e)
                {
                    throw new InvalidHexStringException(e);
                }
            }
        }