将二进制数转换为ascii字符

时间:2012-03-13 16:59:29

标签: c# hex ascii

我正在从设备读取信息,它以整数格式向我返回数据,我需要使用C#将其转换为ASCII字符。

以下是我必须转换的数据的示例。我从设备收到整数值26990,我需要将其转换为ASCII。我碰巧知道,对于这个值,期望的结果将是“ni”。

我知道整数值26990在十六进制中等于696e,在二进制中等于110100101101110,但我想知道如何进行转换,因为我无法自己解决。

有人可以帮忙吗?

非常感谢,

卡尔

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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"。请注意,在后者中,您可能必须处理字节序问题。

进一步参考:

答案 2 :(得分: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');
    }
}