.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是字节数。
我仅限于使用 .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是字节数。