C# 3.0 如何将字符串转换为ushort数组

C# 3.0 如何将字符串转换为ushort数组,c#-3.0,C# 3.0,如何将字符串转换为ushort数组 非常感谢你的帮助 谢谢, 洛克斯 不确定这是否是最好的方法,但它应该有效 编辑:我不知道string实现了IEnumerable。所以实际上你只需要: ushort[] result = s.Select(c => (ushort)c).ToArray(); 感谢Jeff指出这一点。如果您不需要可验证的IL,那么只使用标准库的最快方法(避免完全复制字符串数据)就是使用不安全的重载编码。GetBytes: fixed (char* src = str)

如何将字符串转换为ushort数组

非常感谢你的帮助

谢谢, 洛克斯

不确定这是否是最好的方法,但它应该有效

编辑:我不知道
string
实现了
IEnumerable
。所以实际上你只需要:

ushort[] result = s.Select(c => (ushort)c).ToArray();

感谢Jeff指出这一点。

如果您不需要可验证的IL,那么只使用标准库的最快方法(避免完全复制字符串数据)就是使用不安全的重载
编码。GetBytes

fixed (char* src = str) {
   fixed (ushort* dst = arr) {
       Encoding.Unicode.GetBytes(src, str.Length, (byte*)dst, arr.Length * 2);
   }
}

+1,但不需要将字符串转换为数组。可以忽略它。你将如何处理这个数组?你是否需要一个尾随的零,因为你要传递一个以零结尾的字符串?
fixed (char* src = str) {
   fixed (ushort* dst = arr) {
       Encoding.Unicode.GetBytes(src, str.Length, (byte*)dst, arr.Length * 2);
   }
}