代码之家  ›  专栏  ›  技术社区  ›  Euthyphro

等效于转换。.Net 2.0中的ToChar(字节)?

  •  0
  • Euthyphro  · 技术社区  · 9 年前

    我只限于使用.Net 2.0,并尝试编写将字节转换为字符的代码。

    理想情况下,我会使用 Convert.ToChar(buffer[i]); byte 在一个 byte[] 数组,但在.Net 2.0中不存在此功能。使用 BitConverter.ToChar(buffer, i) 似乎总是导致数组越界错误。

    有人建议我如何在.Net 2.0中将字节转换为字符吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Richard Schneider    9 年前

    如果你有一个 byte 那么您必须假设该字符是ASCII。 char 是Unicode 16。ASCII的前128个代码值直接映射到Unicode。所以试试这个

    public char ToChar(byte b)
    {
      if (b < 0 || b > 127)
         throw new ArgumentException("Not an ASCII character.");
      return (char) b;
    }
    

    更新

    现在大多数网络软件都假设字符串是UTF-8编码的

    var s = Encoding.Utf8.GetString(buffer, i, n);
    

    哪里 n 是字节数。