我正在从设备读取信息,它以整数格式向我返回数据,我需要使用C#将其转换为ASCII字符。
以下是我必须转换的数据的示例。我从设备收到整数值26990,我需要将其转换为ASCII。我碰巧知道,对于这个值,期望的结果将是“ni”。
我知道整数值26990在十六进制中等于696e,在二进制中等于110100101101110,但我想知道如何进行转换,因为我无法自己解决。
有人可以帮忙吗?
非常感谢,
卡尔
答案 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)
使用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');
}
}