我现在正在学习C#,想知道C#是否有与chr
和ord
等价的函数。
char
实际上是有效的UInt16
类型;因此我们可以直接进行强制转换:
chr: (char)
显式转换(如果i
超出了[0..UInt16.MaxValue]
范围,则会发生整数溢出) int i = ...
char c = (char) i;
ord:可以是(int)
或者隐式转换(将char
转换为int
总是可行的)。
char c = ...
int i = c;
char
是一个UTF-16码元,因此如果你在int
和char
之间进行转换,你将无法处理超出基本多文种平面的字符。chr
的等效物将是char.ConvertFromUtf32(int)
- 这将返回一个字符串,因为非BMP字符最终将被表示为两个UTF-16码元。
ord
的等效物将是char.ConvertToUtf32(string, int)
,它允许您在字符串中找到给定索引处的码点,并考虑它是否由两个UTF-16码元组成。相比之下,如果您有一个char
,那么您能做的最好的事情就是使用强制转换。
c
是char
类型,i
是int
类型,只需使用cast:char c = (char) i;
和int i = c;
- Dmitry Bychenko