我正在從設備讀取信息,它將數據以整數格式返回給我,我需要使用C#將其轉換爲ASCII字符。將二進制數字轉換爲ASCII字符
以下是我必須轉換的數據的一個示例。我從我的設備收到整數值26990,我需要將其轉換爲ASCII。我只是碰巧知道,對於這個值,期望的結果是「ni」。
我知道整數值26990等於696e十六進制,110100101101110二進制,但想知道如何做轉換,因爲我不能爲自己工作。
任何人都可以幫忙嗎?
非常感謝,
卡爾
我正在從設備讀取信息,它將數據以整數格式返回給我,我需要使用C#將其轉換爲ASCII字符。將二進制數字轉換爲ASCII字符
以下是我必須轉換的數據的一個示例。我從我的設備收到整數值26990,我需要將其轉換爲ASCII。我只是碰巧知道,對於這個值,期望的結果是「ni」。
我知道整數值26990等於696e十六進制,110100101101110二進制,但想知道如何做轉換,因爲我不能爲自己工作。
任何人都可以幫忙嗎?
非常感謝,
卡爾
int i = 26990;
char c1 = (char)(i & 0xff);
char c2 = (char)(i >> 8);
Console.WriteLine("{0}{1}", c1, c2);
如果設備發送的字節你可以使用這樣的事情:
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"
。請注意,在後者中,您可能需要處理字節順序問題。
另外參考:
使用BitConverter
和Encoding
來執行轉換:
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');
}
}