我正在学习C#,并且想知道C#是否与chr
和ord
相当。
在C#中,char
是有效的UInt16
;这就是为什么我们可以简单地演员:
chr:(char)
显式演员(如果i
超出[0..UInt16.MaxValue]
范围,我们将有整数溢出)
int i = ...
char c = (char) i;
ord:要么是(int)
,要么是隐式演员(从char
到int
总是有可能)
char c = ...
int i = c;
在Python 3中,字符串使用Unicode代码点,而在C#中,char
是UTF-16代码单元,因此如果在int
和char
之间进行转换,则无法处理Basic Multilingual Plane之外的字符。
如果处理非BMP代码点对您很重要,那么chr
的等价物将是char.ConvertFromUtf32(int)
- 这会返回string
,因为非BMP字符最终将被表示为两个UTF-16代码单元。
相当于ord
将是char.ConvertToUtf32(string, int)
,它允许您在字符串中找到给定索引处的代码点,同时考虑它是否由两个UTF-16代码单元组成。相比之下,如果你有一个char
,那么你能做的最好就是施法。