将短数组转换为字符串C#

Fus*_*ate 7 c# utf-16

是否可以将short数组转换为string,然后显示文本?

short[] a = new short[] {0x33, 0x65, 0x66, 0xE62, 0xE63};
Run Code Online (Sandbox Code Playgroud)

utf16(泰语字符)包含在数组中.它如何输出并显示泰语和英语单词?

谢谢.

Jus*_*now 10

您可以使用此方法从UTF16字节数组中获取字符串:

System.Text.Encoding.Unicode.GetString(bytes)
Run Code Online (Sandbox Code Playgroud)

但是,这只接受一个字节数组.因此,您首先必须将短路转换为字节:

var bytes = a.SelectMany(x => BitConverter.GetBytes(x)).ToArray();
Run Code Online (Sandbox Code Playgroud)

或者稍微冗长但效率更高的代码:

var bytes = new byte[a.Length * 2];
Buffer.BlockCopy(a, 0, bytes, 0, a.Length * 2);
Run Code Online (Sandbox Code Playgroud)


Buh*_*ica 5

我略提了其他人的答案,但这是做同一件事的一种更干净的方法:

short[] shorts = new short[] { 0x33, 0x65, 0x66, 0xE62, 0xE63 };
char[] chars = Array.ConvertAll(shorts, Convert.ToChar);
string result = new string(chars);
Run Code Online (Sandbox Code Playgroud)


duD*_*uDE 3

尝试这个:

//short[] a = new short[] {0x33, 0x65, 0x66, 0xE62, 0xE63};
char[] a = new char[] {0x33, 0x65, 0x66, 0xE62, 0xE63};
string s = new string(a);

Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

  • @Guvante我不同意。_如果_他没有真正的理由使用“short”。:-) 只是提出答案至少需要一些限定。 (2认同)