public override char CalculateCheckDigit() { byte[] isbnDigits = ValueWithoutHyphens.Select(c => byte.Parse(c.ToString())).ToArray(); int m = 1, result = 0; for (int i = 0; i < 13; i++) { result += isbnDigits[i] * (2 * (m++ % 2) + 1); } int checkDigit = (10 - result % 10) % 10; return(Convert.ToChar(checkDigit)); }
public override char CalculateCheckDigit() { byte[] isbnDigits = ValueWithoutHyphens.Select(c => byte.Parse(c.ToString())).ToArray(); int m = 10, result = 0; for (int i = 0; i < 10; i++) { result += isbnDigits[i] * m--; } int checkDigit = 11 - (result % 11); if (checkDigit == 11) { return('0'); } if (checkDigit == 10) { return('X'); } return(Convert.ToChar(checkDigit)); }