有没有 C# 版本的 Python chr 和 ord 函数?

7

我现在正在学习C#,想知道C#是否有与chrord等价的函数。


如果cchar类型,iint类型,只需使用castchar c = (char) i;int i = c; - Dmitry Bychenko
https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/types-and-variables - Mikev
1
显式转换它! - DirtyBit
2个回答

9
在C#中,char实际上是有效的UInt16类型;因此我们可以直接进行强制转换chr: (char)显式转换(如果i超出了[0..UInt16.MaxValue]范围,则会发生整数溢出)
 int i = ...
 char c = (char) i; 

ord:可以是(int)或者隐式转换(将char转换为int总是可行的)。

 char c = ...
 int i = c;

3
在Python 3中,字符串是基于Unicode码点工作的,而在C#中,char是一个UTF-16码元,因此如果你在intchar之间进行转换,你将无法处理超出基本多文种平面的字符。
如果处理非BMP码点很重要,chr的等效物将是char.ConvertFromUtf32(int) - 这将返回一个字符串,因为非BMP字符最终将被表示为两个UTF-16码元。 ord的等效物将是char.ConvertToUtf32(string, int),它允许您在字符串中找到给定索引处的码点,并考虑它是否由两个UTF-16码元组成。相比之下,如果您有一个char,那么您能做的最好的事情就是使用强制转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接