我目前正在学习C#,想知道C#是否与chr和ord等效。
答案 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代码单元,因此,如果在int
和char
之间进行转换,则可以将无法在基本多语言平面之外处理字符。
如果处理非BMP代码点对您而言很重要,则chr
的等效项为char.ConvertFromUtf32(int)
-这将返回string
,因为非BMP字符最终将表示为两个UTF-16代码单元。
等效于ord
将是char.ConvertToUtf32(string, int)
,这将使您能够考虑字符串是否由两个UTF-16组成,从而在字符串中找到给定索引的代码点代码单位。相反,如果您有char
,则最好的方法就是强制转换。