2013-08-29 3 views
0

0210 18 14 cb f5 50 d3 14 00 0d 00 09 00 05 00 04 7b 28 00 00 00 28 cb와 같은 긴 코드가 있습니다.C# 디코딩 (컨버터)

나는 2.25 나는이 프로그램을 작성 자사의 동등한 가치에 00 09

를 디코딩하기 위하여려고하고있다,하지만 난 대신 00 09 00 1E 포함 된 다른 코드가있을 때 문제가 나타납니다.

00 09는 0000 0000 0000 1001로 변환해야하며 나머지 2 비트는 0.25에서 여러 값이어야하고 나머지는 1에서 2.25에 도달해야합니다. 00 1E와 같은 16 진수 값 인식 프로그램을 어떻게 변경합니까?

 double q=0.0,w=0.0,x,y; 
     char []chrxB1=new char [4]; 
     char[] chrxB2 = new char[4]; 
     char[] chrxB3 = new char[4]; 
     char[] chrxB4 = new char[4]; 
     char []sn=new char [74]; 
     string ss, xB1, xB2, xB3, xB4, yB1, yB2, yB3, yB4; 

     ss = textBox1.Text; 
     xB1 = ss[37].ToString(); 
     xB2 = ss[36].ToString(); 
     xB3 = ss[34].ToString(); 
     xB4 = ss[33].ToString(); 

     yB1 = ss[43].ToString(); 
     yB2 = ss[42].ToString(); 
     yB3 = ss[40].ToString(); 
     yB4 = ss[39].ToString(); 

     string b1 = Convert.ToString(int.Parse(xB1), 2); 
     chrxB1= b1.ToArray(); 
     if (chrxB1.Length!=0) 
      for (int i = 0; i < chrxB1.Length; i++) 
      { 
       if (i == 0) 
        q=(int.Parse(chrxB1[i].ToString()) * (1)); 
       else if (i == 1) 
        q = q + (int.Parse(chrxB1[i].ToString()) * (2)); 
       else if (i == 2) 
        w = int.Parse(chrxB1[i].ToString()) * (1); 
       else 
        w = w + (int.Parse(chrxB1[i].ToString()) * (2)); 
      } 
     q=q*0.25; 
     string b2 = Convert.ToString(int.Parse(xB2), 2); 
     chrxB2 = b2.ToArray(); 
     if (chrxB2.Length != 0) 
      for (int i = 0; i < chrxB2.Length; i++) 
      { 
       if (i == 0) 
        w = w + (int.Parse(chrxB2[i].ToString()) * (4)); 
       else if (i == 1) 
        w = w + (int.Parse(chrxB2[i].ToString()) * (8)); 
       else if (i == 2) 
        w = int.Parse(chrxB2[i].ToString()) * (16); 
       else 
        w = w + (int.Parse(chrxB2[i].ToString()) * (32)); 
      } 
     string b3 = Convert.ToString(int.Parse(xB3), 2); 
     chrxB3 = b3.ToArray(); 
     if (chrxB3.Length != 0) 
      for (int i = 0; i < chrxB3.Length; i++) 
      { 
       if (i == 0) 
        w = w + (int.Parse(chrxB3[i].ToString()) * (64)); 
       else if (i == 1) 
        w = w + (int.Parse(chrxB3[i].ToString()) * (128)); 
       else if (i == 2) 
        w = int.Parse(chrxB3[i].ToString()) * (256); 
       else 
        w = w + (int.Parse(chrxB3[i].ToString()) * (512)); 
      } 
     string b4 = Convert.ToString(int.Parse(xB4), 2); 
     chrxB4 = b4.ToArray(); 
     if (chrxB4.Length != 0) 
      for (int i = 0; i < chrxB4.Length; i++) 
      { 
       if (i == 0) 
        w=w+(int.Parse(chrxB4[i].ToString()) * (1024)); 
       else if (i == 1) 
        w = w + (int.Parse(chrxB4[i].ToString()) * (2048)); 
       else if (i == 2) 
        w = int.Parse(chrxB4[i].ToString()) * (4096); 
       else 
        w = w + (int.Parse(chrxB4[i].ToString()) * (8192)); 
      } 
     x = w + q; 
     textBox2.Text = x.ToString(); 
    } 
} 
+3

어떤 종류의 "코딩"을 사용하고 있습니까? 즉, '00 09'과'2.25'는 어떻게 같습니까? 당신이하려고하는 것을 설명하는 간단한 샘플을 만들 수 있습니까? 여기에 불필요한 많은 코드가 있습니다 (원하는 답을 얻기 위해). 다른 모든 사람들에게 어렵게 만듭니다! – Floris

+0

2.25와 0.25는 무엇입니까? 어떤 종류의 코드를 말하는거야? 그것은 고정 소수점 부동 소수입니까? –

답변

0

- 난 10이 아니라 0 %는 당신이 무엇을 요구하고 있는지 확신합니다. 그러나, 나는 16 진수로 정수를 나타내는 문자열을 변환하는 방법을 묻고 있다고 생각합니다.

var num = Int32.Parse("001e", NumberStyles.HexNumber); 

NumberStylesSystem.Globalization에, 그래서를 포함하거나 완전히 자격을해야합니다.