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