Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 10진수를 8진수로 변환하는 방법 완벽 가이드

C#에서 10진수를 8진수로 변환하기

C#에서 10진수(decimal) 값을 8진수(octal)로 변환하려면 while 반복문을 활용하는 것이 가장 일반적인 방법입니다. 핵심 원리는 간단합니다. 10진수 값을 8로 나눈 나머지를 배열에 차례대로 저장하고, 몫이 0이 될 때까지 이 과정을 반복하는 것입니다.

변환 알고리즘의 원리

먼저 10진수 값을 8로 나눈 나머지(모듈로 연산)를 8진수 저장용 배열에 담습니다.

while (dec != 0) {
    oct[i] = dec % 8;
    dec = dec / 8;
    i++;
}

나머지를 저장한 후에는 해당 숫자를 8로 나누어 다음 자릿수를 계산합니다. 이 과정은 값이 0이 될 때까지 계속됩니다.

전체 예제 코드

아래는 10진수 18을 8진수로 변환하는 완전한 C# 코드입니다. 실행 결과로 22가 출력됩니다.

using System;

namespace Demo {
    class Program {
        static void Main(string[] args) {

            int[] oct = new int[30];

            // 10진수 값
            int dec = 18;

            int i = 0;
            while (dec != 0) {
                oct[i] = dec % 8;   // 8로 나눈 나머지를 배열에 저장
                dec = dec / 8;      // 값을 8로 나눔
                i++;
            }

            // 역순으로 출력 (마지막에 구한 자릿수가 가장 높은 자리)
            for (int j = i - 1; j >= 0; j--)
                Console.Write(oct[j]);

            Console.ReadKey();
        }
    }
}

코드 설명

1. 나머지 저장: dec % 8 연산으로 현재 자릿수의 8진수 값을 구해 배열에 저장합니다.

2. 값 갱신: dec / 8 연산으로 원래 숫자를 줄여가며 다음 자릿수를 준비합니다.

3. 역순 출력: 나머지는 낮은 자릿수부터 저장되므로, 배열을 뒤에서부터 출력해야 올바른 8진수 결과를 얻을 수 있습니다.

예를 들어 10진수 18의 경우, 18 ÷ 8의 나머지는 2이고 몫은 2입니다. 다시 2 ÷ 8의 나머지는 2이고 몫은 0이 되어 반복이 종료됩니다. 따라서 결과는 22(8진수)가 됩니다.