2012-03-13 94 views
3

我正在從設備讀取信息,它將數據以整數格式返回給我,我需要使用C#將其轉換爲ASCII字符。將二進制數字轉換爲ASCII字符

以下是我必須轉換的數據的一個示例。我從我的設備收到整數值26990,我需要將其轉換爲ASCII。我只是碰巧知道,對於這個值,期望的結果是「ni」。

我知道整數值26990等於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'); 
    } 
}