获取char的十进制ascii值

时间:2016-11-21 22:54:12

标签: c++ char type-conversion ascii

我需要获取char的十进制ascii值。直到现在使用它来打印它(避免负值)没有问题。

char x;
cout << dec << (int)x << endl;

当我想将dec值分配给int变量时,问题就出现了,dec无法在cout之外使用。有什么建议怎么做?请注意,(int) char不会起作用,因为我也会得到负值,我想避免它们。

我已尝试使用atoiunsigned int,但到目前为止,没有运气。

4 个答案:

答案 0 :(得分:2)

char类型的对象强制转换为unsigned char类型的对象就足够了。例如

char c = CHAR_MIN; 

int x = ( unsigned char )c;

int x = static_cast<unsigned char>( c );

答案 1 :(得分:1)

它取决于编译器的实现, 一些编译器将char实现为unsigned,并允许扩展的ASCII字符(http://www.ascii-code.com/) ,下面两个链接具有相同的代码,只有一个工作 http://ideone.com/72Iiaz //使用gcc c ++ 4. *并且不编译 http://ideone.com/hbmBK6 //使用c ++ 14

#include<iostream>
using namespace std;


int main(){
    char ch = 'x';
    int num = ch;
    cout<<ch<<" => " << num << endl;
    ch = 'µ'; // should now have an extended ascii character
    num = ch;
    cout<<ch<<" => " << num << endl;
    cout<<" using unsigned "<< (unsigned int) 'µ';
    return 0;
}

答案 2 :(得分:0)

在C ++中使用static_cast<int>( someCharValue )signed char(和unsigned char)值转换为整数 - 但这不是一个有意义的操作,因为char无论如何都是整数类型

如果你想要一个十进制字符串,那么使用C ++ 11&#39 {s} std::to_string函数:

#include <string>

using namespace std;

char someChar = 'A';
int someCharAsInteger = static_cast<int>( someChar ); // this step is unnecessary, but it's to demonstrate that they're all just integers.
string someCharsNumericIntegerValueAsDecimalString1 = to_string( someChar ); // as there is no `to_string(char)` implicit upsizing to `int` will occur.
string someCharsNumericIntegerValueAsDecimalString2 = to_string( someCharAsInteger );

cout << someCharsNumericIntegerValueAsDecimalString1 << endl;
cout << someCharsNumericIntegerValueAsDecimalString2 << endl;

这将输出:

65
65

...假设您的系统是ASCII。

答案 3 :(得分:0)

您可以通过显式转换或隐式转换将字符转换为整数:

int a = 'a'; // implicit conversion
cout << a << endl; // 97

int A = (int)'A'; explicit conversion
cout << a << endl; // 65