有C#等同于Python的chr和ord吗?

时间:2019-02-28 14:52:17

标签: c# python

我目前正在学习C#,想知道C#是否与chr和ord等效。

2 个答案:

答案 0 :(得分:3)

C#中,char有效地UInt16;这就是为什么我们可以简单地 cast

chr: (char) 显式强制转换(如果i超出[0..UInt16.MaxValue]范围,我们将发生整数溢出)< / p>

 int i = ...
 char c = (char) i; 

ord:可以是(int)甚至是隐式强制转换(始终可以从char投射到int

 char c = ...
 int i = c;

答案 1 :(得分:0)

在Python 3中,字符串按照Unicode代码点工作,而在C#中,char是UTF-16代码单元,因此,如果在intchar之间进行转换,则可以将无法在基本多语言平面之外处理字符。

如果处理非BMP代码点对您而言很重要,则chr的等效项为char.ConvertFromUtf32(int)-这将返回string,因为非BMP字符最终将表示为两个UTF-16代码单元。

等效于ord将是char.ConvertToUtf32(string, int),这将使您能够考虑字符串是否由两个UTF-16组成,从而在字符串中找到给定索引的代码点代码单位。相反,如果您有char,则最好的方法就是强制转换。