it-100


 WPF & C# - 진수변환(Base Converter) / Convert / ToInt32 / 2진수 / 10진수 / 16진수 / n진수 / 진법 )



X(2,10,16)진수 문자열을 10진수 숫자로 진수변환



1
2
3
4
5
6
7
8
9
10
11
12
// X(2,10,16)진수 문자열을 10진수 숫자로
string str = "0010101";

int a = Convert.ToInt32(str, 2); // 결과값 : 21
lbl.Content += a.ToString() + "\n";
 
int b = Convert.ToInt32(str, 10); // 결과값 : 10101
lbl.Content += b.ToString() + "\n"; ;
 
int c = Convert.ToInt32(str, 16); // 결과값 : 65793
lbl.Content += c.ToString() + "\n"; ;
 
cs



10진수 숫자를 X(2,10,16)진수 문자열로 진수변환



1
2
3
4
5
6
7
8
9
10
11
// 10진수 숫자를 X(2,10,16)진수 문자열로
int i = 21;
 
string str2 = Convert.ToString(i, 2); // 결과값 : 10101
lbl.Content += str2.ToString() + "\n";
 
string str10 = Convert.ToString(i, 10); // 결과값 : 21
lbl.Content += str10.ToString() + "\n";
 
string str16 = Convert.ToString(i, 16); // 결과값 : 15
lbl.Content += str16.ToString() + "\n";
cs



10진수 숫자를 n진수 문자열로 진수변환



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void btn_Click(object sender, RoutedEventArgs e)
{
    int n = 17;  // 값(10진수)
    int j = 3;   // 진법
    basej(n, j);
    lbl.Content = val;
}
 
string val = "";
private void basej(int n, int j)
{
    int k = n / j;
    val = (n % j).ToString() + val;   // 나머지를 뒤로 이동
 
    if (k >= j) basej(k, j);   // 나눌게 있다면? 재귀함수
    else val = k.ToString() + val;   // 나눌게 없다면 ? 몫
}
cs

개인적인 필요에 의해 만들어 보았다.
return 값으로 basej(int n, int j, val) 방식으로 만들면 제대로된 값이 안나와서 val 을 전역 변수로 선언했다.
좀 아쉽지만 결과값은 잘 나온다^^

괜찮다면 추천 꾸~욱!!! ^^




출처: http://insurang.tistory.com/227 [it 정보 메모지]