We help IT Professionals succeed at work.

Conversion of Char to Int32 giving confusing results

Tom Knowlton
Tom Knowlton asked
on
In the debugger, c is equal to '4' which I expected.  But charAsInt equals 52 after the line runs, instead of 4.  It seems to be picking up the ASCII value not the raw integer value (is my guess).  

How do I get a char of '4' to be converted to an int of 4?



string cardnumber = "400006400017"

 foreach (char c in cardnumber)
            {
                int charAsInt = Convert.ToInt32(c);  // in debugger, c is equal to '4' which I expected.  But charAsInt equals 52 after this line runs, instead of 4.

                if (((charAsInt % 2) == 0))
                {
                    runningSum += charAsInt * 3;
                }
                else
                {
                    runningSum += charAsInt * 1;
                }
            }

Open in new window

Comment
Watch Question

CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2019
Commented:
Try this?

string cardnumber = "400006400017"

 foreach (char c in cardnumber)
            {
                int charAsInt = (int)c;  // in debugger, c is equal to '4' which I expected.  But charAsInt equals 52 after this line runs, instead of 4.

                if (((charAsInt % 2) == 0))
                {
                    runningSum += charAsInt * 3;
                }
                else
                {
                    runningSum += charAsInt * 1;
                }
            }
                                  

Open in new window

Explore More ContentExplore courses, solutions, and other research materials related to this topic.