将 UTF-32 (HEX) 转换为字符串时出现 ArgumentOutOfRangeException

ArgumentOutOfRangeException when converting UTF-32 (HEX) to string

我在将某些 UTF-32 HEX 转换为字符串时遇到问题。我收到此错误消息

"A valid UTF32 value is between 0x000000 and 0x10ffff, inclusive, and should not include surrogate codepoint values (0x00d800 ~ 0x00dfff). Parameter name: utf32"

使用此代码时

int decodedInt = Convert.ToInt32("D8F5", 16);
string decodedStr = char.ConvertFromUtf32(decodedInt);

当我使用这个十六进制“9FDB”时,它没有任何问题。我做错了什么?

UTF-16 使用 0xD800..0xDFFF 范围内的代码点通过代理对对基本多语言平面之外的代码点进行编码。它们永远不会出现在 UTF-32 编码的文本中。

这就是错误说的原因

should not include surrogate codepoint values (0x00d800 ~ 0x00dfff)