【问题标题】:Char decimal value [duplicate]Char十进制值[重复]
【发布时间】:2021-02-05 02:49:04
【问题描述】:

是否可以获取字符的十进制值?我知道我可以使用 short(char) 但这会浪费内存,这就是我首先使用 char 的原因,我只想要 8 位数据,所以我使用 char(类似于 C# 中的 byte)。在我的程序中,当我需要打印它时,它总是显示一些与十进制值对应的奇怪字符,我希望它显示十进制值本身。那么是否有 C# 等效的 char.GetNumericValue()?

【问题讨论】:

  • 您是在寻找字符的 ascii 值,还是希望将 '2' 之类的东西转换为 2?
  • 如何打印出来?您可以选择将其打印为数字还是字符。
  • 请出示minimal reproducible example,在您的问题陈述中添加更多详细信息,并向我们展示预期和实际输出。
  • 您是说cout << short(c); 是在浪费内存,还是您想将其存储为数值? (它已经存储为一个数值。)另外,也许您正在寻找'1' 而不是1?很难说。
  • 像所有整数类型一样,char 包含一个数值。按照约定,当显示时,char 的值被解释为要显示的字符。如果您想以不同的方式显示它(通常是这种情况),只需假装它不是char,即通过转换它:std::cout << short(value)。该演员表不会影响value 使用的存储量;它只是说不做通常的解释,而是显示数值。是的,short(value) 使用的内存比 value 多,但这只是在转换值以供显示时使用。

标签: c++ casting char type-conversion integer


【解决方案1】:

您可以使用链接中描述的integer 之一。

如果问题只是打印问题,您可以使用 std::cout 与此语法

char a = 45;
cout << +a; // promotes a to a type printable as a number, regardless of type.

只要该类型提供具有普通语义的一元 + 运算符,它就可以工作。如果您要定义一个表示数字的类,要提供具有规范语义的一元 + 运算符,请创建一个 operator+(),它只需按值或通过引用到常量返回 *this。

进一步阅读c++-faq print-char-or-ptr-as-number

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2021-02-07
    • 2017-04-05
    • 2013-06-16
    • 2015-04-14
    • 2017-04-16
    • 2011-10-28
    • 2019-11-22
    • 2017-03-19
    相关资源
    最近更新 更多