Example #1
0
        private static byte[] GetChecksumAndSizeFromUri(Uri uri, out long size)
        {
            size = 0;
            var groups = ChecksumRegex.Match(uri.ToString()).Groups;

            if (groups.Count != 3)
            {
                return(null);
            }
            size = long.Parse(groups[1].Value);
            var checksumAsString = groups[2].Value;
            var result           = new byte[20];

            for (var i = 0; i < result.Length; i++)
            {
                result[i] = byte.Parse(new string(new[] { checksumAsString[2 * i], checksumAsString[2 * i + 1] }), NumberStyles.HexNumber);
            }
            return(result);
        }
Example #2
0
        private static bool TryGetChecksumAndSizeFromUri(Uri uri, out byte[] checksum, out long size)
        {
            size     = 0;
            checksum = null;

            var groups = ChecksumRegex.Match(uri.ToString()).Groups;

            if (groups.Count != 3)
            {
                return(false);
            }

            // regex check above ensures that all the data below is parsable
            size = long.Parse(groups[1].Value);
            var checksumAsString = groups[2].Value;

            checksum = new byte[20];
            for (var i = 0; i < checksum.Length; i++)
            {
                checksum[i] = byte.Parse(checksumAsString.Substring(2 * i, 2), NumberStyles.HexNumber);
            }

            return(true);
        }