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)); }
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); } } }