将二进制数字转换为ascii字符
本文关键字:ascii 字符 转换 二进制数字 | 更新日期: 2023-09-27 18:27:44
我正在从设备读取信息,它以整数格式向我返回数据,我需要使用C#将其转换为ASCII字符。
以下是我必须转换的数据示例。我从我的设备收到了26990的整数值,我需要将其转换为ASCII。我只是碰巧知道,对于这个值,期望的结果是"ni"。
我知道整数值26990在十六进制中等于696e,在二进制中等于110100101101110,但我想知道如何进行转换,因为我自己无法计算。
有人能帮忙吗?
非常感谢,
Karl
int i = 26990;
char c1 = (char)(i & 0xff);
char c2 = (char)(i >> 8);
Console.WriteLine("{0}{1}", c1, c2);
使用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');
}
}
如果设备正在发送字节,您可以使用类似的东西:
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"
。请注意,在后者中,您可能需要处理endianness问题。
进一步参考:
Encoding
类Encoding.ASCII
属性Encoding.GetString
方法过载