【问题标题】:Get the ascii value for a char, Ord equivalent in C++获取 char 的 ascii 值,C++ 中的 Ord 等价物
【发布时间】:2011-01-25 06:28:39
【问题描述】:

在 delphi 中存在一个名为 Ord 的函数,它返回序数类型表达式的序数值。

例如,您可以通过这种方式检索 char 的 Ascii 值

Ord('A') 返回 65

Ord('a') 返回 97

在 C++ 中,我必须使用哪个函数来获取字符的 ascii 值?

【问题讨论】:

  • 我是一名 C++ 程序员,我在阅读 Delphi 代码时会看到 Ord。我想知道它是什么,这个问题证明我的假设是正确的。只是觉得有点矫枉过正。

标签: c++ delphi


【解决方案1】:

一个简单的int a = c; c 是一个char 应该可以工作。

【讨论】:

  • 不适用于 127 以上的 ANSI 代码,除非使用某种编译器选项。 int a = (unsigned char) c; 会更接近 Ord()。
  • @Sergey,问题中从未提到过ANSI这个词,只是ASCII。并且 ASCII 被限制为 0..127。在任何情况下,ISO 标准都没有强制要求 char 是否已签名。
  • @paxdiablo,但提到了 Ord()。而且 Ord() 确实支持 127 以上的字符。并且应该使用强制转换,因为标准不保证 char 是无符号的,而大多数实现默认使用有符号。不过最好还是使用 Unicode。
  • 很好的答案。很高兴知道它是如此简单,并且投射时的默认值就是这样做的,
【解决方案2】:

字符保存 ASCII 值。

如果您愿意,可以将其转换为整数。

【讨论】:

  • 除了 C++ 标准不需要 ASCII
【解决方案3】:

使用ascii = (int)character 进行类型转换。

【讨论】:

    【解决方案4】:
    char c = 'a';
    printf("%d", c);
    

    这样就可以了……

    如果需要使用 ascii 值进行数值运算,请使用

    char c = 'a';
    int i = (int)c;
    

    【讨论】:

      【解决方案5】:

      怎么样

      #include <ctype.h>
      
      int LOrdValue = __toascii('a');
      

      【讨论】:

        【解决方案6】:

        你可以的

        char a ='A';
        int b = a&0b11111111;
        

        这应该是 65

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-18
          • 2012-11-16
          • 2011-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-02
          • 2021-10-15
          相关资源
          最近更新 更多