2012-03-13 3 views
3

장치에서 정보를 읽는 중이고 데이터가 정수 형식으로 반환되므로 C#을 사용하여 ASCII 문자로 변환해야합니다.이진수를 ASCII 문자로 변환

다음은 변환해야하는 데이터의 예입니다. 내 장치에서 다시 정수 값 26990을 받고 ASCII로 변환해야합니다. 나는이 값에 대해 원하는 결과가 "ni"라는 것을 알게됩니다.

정수 값 26990은 16 진수 696e와 같으며 이진수는 110100101101110과 같지만 전환을 수행하는 방법을 알고 싶습니다. 혼자 해결할 수 없으므로 변환 방법을 알고 싶습니다.

아무도 도와 줄 수 있습니까?

많은 감사,

답변

5
int i = 26990; 
char c1 = (char)(i & 0xff); 
char c2 = (char)(i >> 8); 

Console.WriteLine("{0}{1}", c1, c2); 
0

장치가이 같은 것을 사용할 수 있습니다 바이트를 전송하는 경우 장치가 정수를 보내는 경우

byte[] bytes = new byte[] { 0x69, 0x6e }; 
string text = System.Text.Encoding.ASCII.GetString(bytes); 

그렇지 않으면, 당신은 사용할 수 있습니다 다음과 같은 내용 :

byte[] bytes = BitConverter.GetBytes(26990); 
string text = System.Text.Encoding.ASCII.GetString(bytes, 0, 2); 

두 경우 모두 text에는 실행 후 "ni"이 포함됩니다. 후자의 경우 엔디안 문제를 처리해야 할 수도 있습니다.

더 참조 :

0

사용 BitConverterEncoding 변환 수행 할 수

class Program 
{ 
    public static void Main() 
    { 
     int d = 26990; 
     byte[] bytes = BitConverter.GetBytes(d); 
     string s = System.Text.Encoding.ASCII.GetString(bytes); 
     // note that s will contain extra NULLs here so.. 
     s = s.TrimEnd('\0'); 
    } 
} 
관련 문제