본문 바로가기
프로그래밍/C#

C# char를 int로 바꾸는데 '0'을 빼는 이유

by bantomak 2024. 2. 26.

char를 int로 바꾸고 싶다

문자열 형식으로 된 숫자를 int 형식으로 변환하고 싶을 때, Int32.Parse()를 사용해도 되지만 해당 메서드를 사용하지 못한다면 어떻게 변환해야 하는가?

 

string 형식의 문자열의 각 자릿수를 받아서 '0'을 빼주면 된다.

 

'0'을 빼주는 이유는 char가 아스키코드(ASCII)로 되어있기 때문에 문자와 숫자 사이의 차이(offset)를 맞춰주기 위해서다.

 

아스키코드 '0'의 값 : 48

 

예시 : 아스키코드 '5'의 값 : 53 - 48 = 5

 

이런 식으로 아스키코드 '5'가 숫자 5로 변환이 가능하다.

 

예제 코드

using System;

class Program
{
    static void Main(string[] args)
    {
        var input = Console.ReadLine();

        int value = 0;

        for (int i = 0; i < input.Length; i++)
        {
            value = value * 10 + (input[i] - '0');
        }

        Console.WriteLine(value);
    }
}

 

char - '0'를 해줄 경우, 정상적으로 변환

 

참조 사이트

 

[Java] CHAR - '0' 이 뭘까? (char 문자를 숫자로 변환하는 방법)

Java : char 문자를 숫자로 변경하는 방법!

velog.io

댓글