C# 将UTF-32(十六进制)转换为字符串时ArgumentOutOfRange异常

C# 将UTF-32(十六进制)转换为字符串时ArgumentOutOfRange异常,c#,hex,utf-32,C#,Hex,Utf 32,我无法将一些UTF-32十六进制转换为字符串。我收到了这个错误消息 “有效的UTF32值介于0x000000和0x10ffff(包括0x000000和0x10ffff)之间,并且 不应包括代理代码点值(0x00d800~0x00dfff)。 参数名称:utf32“ 使用此代码时 int decodedInt = Convert.ToInt32("D8F5", 16); string decodedStr = char.ConvertFromUtf32(decodedInt); 当我使用这个十六

我无法将一些UTF-32十六进制转换为字符串。我收到了这个错误消息

“有效的UTF32值介于0x000000和0x10ffff(包括0x000000和0x10ffff)之间,并且 不应包括代理代码点值(0x00d800~0x00dfff)。 参数名称:utf32“

使用此代码时

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

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

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

这就是为什么错误说

不应包括代理代码点值(0x00d800~0x00dfff)


它是一个代理,本身无效。如何转换这些类型的十六进制