【问题标题】:Is there a C# equivalent of Pythons chr and ord?是否有与 Python 的 chr 和 ord 等效的 C#?
【发布时间】:2019-07-22 12:38:56
【问题描述】:

我目前正在学习 C#,并且想知道 C# 是否与 chrord 有一个等效

【问题讨论】:

标签: c# python char


【解决方案1】:

在 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,那么您能做的最好的事情就是演员表。

【讨论】:

    【解决方案2】:

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

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

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

    ord: (int) 甚至 implicit 转换(从char 转换到int 总是可能的)

     char c = ...
     int i = c;
    

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 2022-12-04
      • 2011-02-25
      • 2011-07-14
      • 2015-07-28
      • 2019-03-07
      • 2010-12-03
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多