میشه بگید برای چی این کار رو می خوای انجام بدی؟
چون این کاری که شما می خوای معمولا برای اینه که بررسی بشه سریال وارد شده صحیحه یا نه و کاربردش برای Register کردن نرم افزار فکر نمی کنم باشه
مثلا IMEI یا همون سریال گوشی در حقیقت 14 رقمه و رقم 15 ام بر اساس فرمولی از 14 رقم قبلی به دست میاد
یا مثلا کد ملی هم همچین الگوریتمی داره
ولی کلا این راه چون یک فرمول ثابت و قابل تشخیص داره خیلی به درد سریال ثبت نرم افزار نمی خوره بلکه کاربردش فقط اینه که اگر کاربر اشتباه تایپی داشت ما بتونیم تشخیص بدیم
در هر صورت چیزی که شما می خوای این یک نمونه اگوریتم خوبشه:
static int char2int(char chr) { return int.Parse(chr.ToString()); }
static int GetCheckSumNumber(long Number)
{
string strNum = Number.ToString();
int mul = 2, sum = 0, chkSum;
for (int i = strNum.Length - 1; i >= 0; i--)
{
if ((char2int(strNum[i]) * mul) >= 10)
sum += ((char2int(strNum[i]) * mul) / 10) + ((char2int(strNum[i]) * mul) % 10);
else
sum += char2int(strNum[i]) * mul;
if (mul == 2)
mul = 1;
else
mul = 2;
}
chkSum = sum % 10;
if (chkSum > 0) chkSum = 10 - chkSum;
return chkSum;
}
این تابع هر عددی بهش بدی یک رقم اصطلاحا CheckSum بهت بر می گردونه که باید به آخر عدد قبلیت اضافه کنی