如何将表示 Unicode 字符的数字(大于 0xFFFF)转换为其在 C# 中的等效字符串

How to convert a number (larger than 0xFFFF) that represents a Unicode character to its equivalent string in C#

例如中日韩统一表意文字扩展A中的一个字符'';它的unicode值是0x20000,因为C#中的char不能表示这样的字符,所以我想知道是否可以将它转换为字符串,我的问题是:

如果我给你一个像 0x20000 这样的数字,如何转换它并让我得到它的等效字符串,如 ""

你可以使用 char.ConvertFromUtf32

int utf32 = 0x20000;
string text = char.ConvertFromUtf32(utf32);

string 本身是一系列 UTF-16 代码单元,在本例中为 U+D840 和 U+DC00,您可以通过打印出各个 char 值来查看:

int utf32 = 0x20000;
string text = char.ConvertFromUtf32(utf32);
Console.WriteLine(((int) text[0]).ToString("x4")); // d840
Console.WriteLine(((int) text[1]).ToString("x4")); // dc00