最佳答案
字符char
是两个字节值,这就是为什么它只能在[\u0000..\uFFFF]
范围内。
如果您正在寻找超过\uFFFF
的值,请注意,它应该表示为两个字符结构,例如字符串
:
string result = "\U000103BD"; // note Capital U, 8 hex digits
Console.Write(result);
输出:
𐎽
如果您想明确地使用这两个字符,您可以使用下面的解码:
public static (char left, char right) Decode(int code) {
if (code < 0x10000)
throw new ArgumentOutOfRangeException(nameof(code));
return (
(char)(((code - 0x10000) >> 10) + 0xD800),
(char)(((code - 0x10000) & 0b1111_111_111) + 0xDC00)
);
}
演示:
(char left, char right) = Decode(0x103BD);
Console.Write(string.Concat(left, right));
输出:
𐎽
最后,从 .Net 6 开始,您可以使用 Rune使用这些字符对进行操作的结构:
Rune rune = new Rune(0x103BD);
Console.Write(rune);
输出:
𐎽
关于c# - 通过\u或\x为一个字符分配一个非常大的十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73595578/