.Net 2.0 中 Convert.ToChar(byte) 的等价物?

Equivalent of Convert.ToChar(byte) in .Net 2.0?

我仅限于使用 .Net 2.0 并尝试编写将字节转换为字符的东西。

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

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

如果你只有一个 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是字节数。