如何在C#中将字符串转换为int数组

2 c# checksum credit-card

我正在制作一个信用卡验证程序,其中我要求的是一个16位数字(信用卡号)的字符串,我想将其转换为int数组.我怎么做?然后我需要将从第一个数字开始的每个其他数字乘以2.

char[] creditNumbers = creditCardNumber.ToCharArray();

creditNumbers[0] = (char)((int)(creditNumbers[0] * 2));
creditNumbers[2] = (char)((int)(creditNumbers[2] * 2));
creditNumbers[4] = (char)((int)(creditNumbers[4] * 2));
creditNumbers[6] = (char)((int)(creditNumbers[6] * 2));
creditNumbers[8] = (char)((int)(creditNumbers[8] * 2));
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的,但我的铸造没有正确完成.我该如何解决这个问题?

svi*_*ick 6

要获得int数组,我会这样做:

creditCardNumber.Select(c => int.Parse(c.ToString())).ToArray()
Run Code Online (Sandbox Code Playgroud)

要使用Luhn算法检查数字,您可以这样做:

bool IsValid(string creditCardNumber)
{
    var sum = creditCardNumber.Reverse()
                              .Select(TransformDigit)
                              .Sum();

    return sum % 10 == 0;
}

int TransformDigit(char digitChar, int position)
{
    int digit = int.Parse(digitChar.ToString());
    if (position % 2 == 1)
        digit *= 2;

    return digit % 10 + digit / 10;
}
Run Code Online (Sandbox Code Playgroud)