去掉开头的”978″和最后一位校验码,变成9位数 从第一位开始,将每一位和10到2的数字相乘,并求和;记为c 求11-c并对结果取11的模+11:11+(11-c)%11 ;如果结果是10就记为X,然后把算出来的一位加到第一步结果的最后,得到10位编码
private static string GetIsbn(string isbn13)
{
//去掉前三位
string isbn10 = isbn13.Substring(3);
//去掉后一位
isbn10 = isbn10.Substring(0, isbn10.Length - 1);
char[] isb = isbn10.ToCharArray();
int j = 10;
int v1 = 0;
for (int i = 0; i < isb.Length; i++)
{
v1 += Convert.ToInt32(isb[i].ToString()) * j;
j--;
}
int b = 11 + ((11 - v1) % 11);
string c = b == 10 ? "x" : b.ToString();
return isbn10 + c;
}