C#으로 RS 232 통신을 하면서 16진수로 변환해서 써야하는 일이 있어서 찾다보니
우연히 찾은 글입니다.
출처 : http://ispkorea.com/trackback/70
진수를 변환하기 위해서는 Convert 클래스만 아시면 됩니다.
일단 X진수에서 X진수로 변환하기 위해서는 10진수로 변환을 하셔야 합니다.
예를 들어 2진수를 16진수로 변환하기 위해서는 2진수 -> 10진수 -> 16진수 이렇게 되는거죠....
그럼 여기서 2진수 -> 10진수로 변환하기 위해서 Convert.ToInt32 메서드를 사용 하시면 되고 10진수 -> 16진수로 변환하기 위해서 Convert.ToString 메서드를 사용 하시면 됩니다.
1. 2진수를 10진수로 변환하는 법
Convert.ToInt32(string value, int fromBase)
첫번째 인자는 10진수로 변환 할 값입니다. 2진수를 10진수로 변환하기 위해서는 첫번째 인자에 "10101010" 이런식으로 2진수를 string 형으로 입력 하시면 됩니다.
두번째 인자는 "첫번째 인자가 몇 진수인가?" 를 나타내는 인자 입니다.
2진수니까 숫자 2를 입력하시면 됩니다.
예) 2진수 10101010 을 10진수로 변환
int result = Convert.ToInt32("10101010", 2);
Console.WriteLine(result); //170 입니다.
2. 10진수를 2진수로 변환하는 법...
Convert.ToString(int value, int toBase)
첫번째 인자는 2진수나 8진수, 16진수로 변환 할 10진수 값입니다.
두번째 인자는 "몇 진수로 변환?" 를 나타내는 인자 입니다.
예)10진수 170을 2진수로 변환
string result = Convert.ToString(170, 2);
Console.WriteLine(result); //10101010 입니다.
콘솔로 입력받아 진수를 변환하는 소스는 다음과 같습니다.
나머지 진수 변환은 응용해 보세요....^^;;
using System;
namespace ConsoleApplication1
{
///
/// Class1에 대한 요약 설명입니다.
///
class Class1
{
///
/// 해당 응용 프로그램의 주 진입점입니다.
///
[STAThread]
static void Main(string[] args)
{
Console.Write("2진수를 16진수로 변환 : ");
// 2진수를 입력 받는다.
string input2 = Console.ReadLine();
// 2진수를 10진수로 변환
int int2 = System.Convert.ToInt32(input2, 2);
// 10진수를 16진수로 변환
string output16 = System.Convert.ToString(int2, 16);
Console.WriteLine("2진수 : " + input2 + " -> 16진수 : " + output16);
Console.Write("16진수를 2진수로 변환 : ");
// 16진수를 입력 받는다.
string input16 = Console.ReadLine();
// 16진수를 10진수로 변환
int int16 = System.Convert.ToInt32(input16, 16);
// 10진수를 2진수로 변환
string output2 = System.Convert.ToString(int16, 2);
Console.WriteLine("16진수 : " + input16 + " -> 2진수 : " + output2);
}
}
}
출처 : http://ispkorea.com/trackback/70