Char十进制值[重复]

Posted

技术标签:

【中文标题】Char十进制值[重复]【英文标题】:Char decimal value [duplicate] 【发布时间】: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 多,但这只是在转换值以供显示时使用。 【参考方案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

【讨论】:

以上是关于Char十进制值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

char[] 转换成 ascii 和十进制值 (double) java

从 char 转换为 int 并打印十进制值

在 java 中,是不是可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符?

如何在c#中将十六进制从char []转换为int [重复]

需要在oracle中显示十进制值

将十六进制值设置为 char 变量以进行填充时出现问题