有没有C#等价的Pythons chr和ord?

问题描述 投票:1回答:2

我正在学习C#,并且想知道C#是否与chrord相当。

c# python
2个回答
5
投票

在C#中,char是有效的UInt16;这就是为什么我们可以简单地演员:

chr:(char)显式演员(如果i超出[0..UInt16.MaxValue]范围,我们将有整数溢出)

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

ord:要么是(int),要么是隐式演员(从charint总是有可能)

 char c = ...
 int i = c;

0
投票

在Python 3中,字符串使用Unicode代码点,而在C#中,char是UTF-16代码单元,因此如果在intchar之间进行转换,则无法处理Basic Multilingual Plane之外的字符。

如果处理非BMP代码点对您很重要,那么chr的等价物将是char.ConvertFromUtf32(int) - 这会返回string,因为非BMP字符最终将被表示为两个UTF-16代码单元。

相当于ord将是char.ConvertToUtf32(string, int),它允许您在字符串中找到给定索引处的代码点,同时考虑它是否由两个UTF-16代码单元组成。相比之下,如果你有一个char,那么你能做的最好就是施法。

© www.soinside.com 2019 - 2024. All rights reserved.