所以我对此的理解是Unicode字符长度为两个字节,因此第一个字节应该是ASCII令牌,第二个字节应该是另一个ASCII令牌。我有一个Unicode字符数组,我想将它转换为ASCII字符数组,最终将是原始字符的两倍。
答案 0 :(得分:2)
答案 1 :(得分:1)
听起来您只想将Unicode字节拆分为两个ASCII字符。 字符串将不相关,字符将完全不匹配。
Unicode字符不是由两个ASCII令牌组成的。
Unicode是ASCII的独特编码。
但如果您只想要字节数据:Encoding.Unicode.GetBytes(data);
就是您所需要的。
答案 2 :(得分:0)
您可以使用Encoding.Convert方法。有了它,您可以指定您希望转换字符串(或字符数组)的编码。
正如他们的文档中所见,这是一个例子:
使用System; 使用System.Text;
namespace ConvertExample
{
class ConvertExampleClass
{
static void Main()
{
string unicodeString = "This string contains the unicode character Pi(\u03a0)";
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
}