C#/문법 정리

C# - Convert 클래스

Khadra 2024. 6. 22. 18:27

Convert 클래스란?

  • 입력받은 데이터를 숫자로 변환할 때 사용한다.
  • Convert 클래스의 메소드들은 이중Parse()와 똑같이 사용할 수 있다.
  • ToInt32(), ToSingle(), ToDouble()과 같이 string을 숫자형으로 바꾸는 여러가지 메소드를 제공한다.
  • ToString()이나 ToInt32() 메소드는 숫자를 원하는 진수로 처리할 수 있다.
    (이를 통해 쉽게 진수 변환이 가능하다.)

Console.ReadLine()

  • 입력받은 데이터는 모두 string이다.

예시

  • ToString(123, 2) = 123을 2진수로 표현한 문자열로 바꾸어 준다.

  • Convert에는 string을 숫자로 바꾸는 메소드뿐만 아니라 ToString(),ToBye(),ToBoolean(),ToChar(),ToDateTime() 등과 같이 여러 자료형 사이의 변환도 지원한다.


예제 코드

using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //int x, y를 선언한다.
            int x, y;

            //첫 번째 숫자를 입력하라는 안내를 출력합니다.
            Write("첫번째 숫자를 입력하세요: ");

            //Console.ReaLine()으로 값을 받아서 Int32형으로 변환하여 x에 할당한다.
            x = Convert.ToInt32(ReadLine());

            //첫 번째 숫자를 입력하라는 안내를 출력합니다.
            Write("두 번째 숫자를 입력하세요: ");

            //Console.ReaLine()으로 값을 받아서 Int32형으로 변환하여 y에 할당한다.
            y = Convert.ToInt32(ReadLine());

            //x와 y의 값을 더해 출력한다.
            WriteLine("{0} + {1} = {2}", x, y, x + y);


            //2,8,10,16진수 출력하기
            //short value를 선언하고 MaxValue를 할당한다.short은 Int16과 같은 자료형이다.
            short value = short.MaxValue; // = Int16.MaxValue

            //콘솔에 "2진수, 8진수, 10진수, 16진수로 출력하기."라고 출력한다.
            WriteLine("\n2진수, 8진수, 10진수, 16진수로 출력하기.");

            //2진수 출력
            //int baseNum은 진수를 의미한다. 
            int baseNum = 2; //진수를 2진수로 정한다.

            //Convert.ToString(value, baseNum)을 사용하여 value값을 2진 문자열로 변환하여 s에 할당한다.
            string s = Convert.ToString(value, baseNum);

            //Convert.ToInt32(s, baseNum)을 사용하여 2진 문자열을 저장하고 있는 s의 값을 Int32 형으로 변환한다.
            int i = Convert.ToInt32(s, baseNum);//baseNum 파라미터가 문자열을 몇 진수로 해석할지 알려준다.

            //i,baseNum,s를 지정된 형식으로 출력한다.
            //{0}은 첫 번째 데이터인 i값을 출력.
            //{1,2}는 두번째 데이터인 baseNum을 2자리로.
            //{2,16}은 세 번째 데이터 s를 16자리에 출력.
            WriteLine("i = {0}, {1,2}진수 = {2,16}", i, baseNum, s);//출력이 정렬되어 보이도록 출력 형식에 자릿수를 사용한다.

            //8진수 출력 - 위의 과정을 반복.
            baseNum = 8;
            s = Convert.ToString(value, baseNum);
            i = Convert.ToInt32(s, baseNum);
            WriteLine("i = {0}, {1,2}진수 = {2,16}", i, baseNum, s);

            //10진수 출력 - 위의 과정을 반복.
            baseNum = 10;
            s = Convert.ToString(value, baseNum);
            i = Convert.ToInt32(s, baseNum);
            WriteLine("i = {0}, {1,2}진수 = {2,16}", i, baseNum, s);

            //16진수 출력 - 위의 과정을 반복.
            baseNum = 16;
            s = Convert.ToString(value, baseNum);
            i = Convert.ToInt32(s, baseNum);
            WriteLine("i = {0}, {1,2}진수 = {2,16}", i, baseNum, s);
        }
    }
}

결과

첫번째 숫자를 입력하세요: 121
두번째 숫자를 입력하세요: 456
121 + 456 = 577

2진수, 8진수, 10진수, 16진수로 출력하기.
i = 32767, 2진수 = 111111111111111
i = 32767, 8진수 =           77777
i = 32767, 10진수 =          32767
i = 32767, 16진수 =           7fff