`如何在 C# 中将 ASCII 数组转换为文本?

`How to Converting a ASCII array to text in c#?

我收到一封来自网络的电报,它是一个字节数组,例如:

 [0]    0x34    
 [1]    0x35    
 [2]    0x35    
 [3]    0x37    

0x34 是 char 4 的十六进制值,0x35 是 ASCII 中 char 5 的十六进制值 table 依此类推

我可以使用

将其转换为字符串
 string s = ASCIIEncoding.UTF8.GetString(Tel, 0, Tel.Length);

结果是

4557

现在我必须将其转换为 0x45 和 0x57,因为 0x45 是字符 'E' 的值,而 0x57 是 'W'

有没有办法在C#中将4557转换成字符串EW?我知道这是一个有点奇怪的协议,但我不知道如何将收到的电报转换为上面数组中的 'EW' vom。

为了发送我可以使用的东西

ToCharArray()

但是我不知道如何转换收到的电报

希望你能理解我的问题

这里是扩展方法

public static IEnumerable<byte> HexToByte(this string s, int partLength)
{
    if (s == null)
        throw new ArgumentNullException("s");
    if (partLength <= 0)
        throw new ArgumentException("Part length has to be positive.", "partLength");

    for (var i = 0; i < s.Length; i += partLength)
        yield return Convert.ToByte(s.Substring(i, Math.Min(partLength, s.Length - i)), 16);
}

下面的命令使用扩展​​方法将字符串转换为字节并打印为 char

input.HexToByte(2).ToList().ForEach(x => Console.WriteLine((char)x));

如何在一个循环中完成所有操作,这样您就不必转换字符串表示形式。这不包含错误处理...

var bytes = new byte[] { 0x34, 0x35, 0x35, 0x37 };
var output = new StringBuilder();

for (int i = 0; i < bytes.Length; i += 2)
{
    output.Append(Char.ConvertFromUtf32(
       Convert.ToInt32(
           ASCIIEncoding.UTF8.GetString(
               new byte[] { bytes[i], bytes[i + 1] }, 0, 2), 16)));
}

输出="EW"