我正在实现一个TryParse()
ASCII 字符串类的方法。该方法接受一个字符串并将其转换为 C 风格的字符串(即以空字符结尾的 ASCII 字符串)。
我一直只使用 a Parse()
,使用:: 转换为 ASCII
public static bool Parse(string s, out byte[] result)
{
result = null;
if (s == null || s.Length < 1)
return false;
byte[]d = new byte[s.Length + 1]; // Add space for null-terminator
System.Text.Encoding.ASCII.GetBytes(s).CopyTo(d, 0);
// GetBytes can throw exceptions
// (so can CopyTo() but I can replace that with a loop)
result = d;
return true;
}
但是,由于 TryParse 的想法的一部分是消除异常的开销并GetBytes()
引发异常,所以我正在寻找一种不同的方法,它不会这样做。
也许有一个类似TryGetbytes()
的方法?
或者,也许我们可以推断标准 .Net 的预期格式string
并以数学方式执行更改(我对 UTF 编码不太熟悉)?
编辑:我猜对于字符串中的非 ASCII 字符,该TryParse()
方法应该返回false
编辑:我希望当我开始ToString()
为这个类实现方法时,我可能需要在那里做相反的事情。