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
在 java 中,是不是可以使用 char 函数将 0 到 15 的十进制值转换为十六进制字符?