C++ 将十六进制字符串存储到字符中?

C++ 将十六进制字符串存储到字符中?,c++,ascii,cout,C++,Ascii,Cout,所以我有一个字符串,里面有一个十六进制值。例如,我的字符串可能有 string a = "0x4D"; 是否可以将0x4D分配给字符?因为我知道如果我有 字符c=0x4D 然后我可以打印出它的ASCII符号,也就是M 是否可以将0x4D存储到一个字符中,以便打印出其ascii符号?如果有人有任何建议,将不胜感激!如果有更好的方法,请告诉我!谢谢 您可以使用strtol将字符串转换为数字。然后你可以打印这个号码或用它做其他你喜欢的事情 哦,等等,你把它加上C++,Strutol非常有C风格。在C

所以我有一个字符串,里面有一个十六进制值。例如,我的字符串可能有

string a = "0x4D";
是否可以将0x4D分配给字符?因为我知道如果我有

字符c=0x4D 然后我可以打印出它的ASCII符号,也就是M

是否可以将0x4D存储到一个字符中,以便打印出其ascii符号?如果有人有任何建议,将不胜感激!如果有更好的方法,请告诉我!谢谢

您可以使用strtol将字符串转换为数字。然后你可以打印这个号码或用它做其他你喜欢的事情

哦,等等,你把它加上C++,Strutol非常有C风格。在C++中,你可以使用String String,并从中提取一个数字。

你可以使用Strtol将字符串转换成一个数字。然后你可以打印这个号码或用它做其他你喜欢的事情

哦,等等,你把它加上C++,Strutol非常有C风格。在C++中,可以使用String String,并从中提取一个数字。

< P>可以使用STD::STOI将字符串转换为整数。 但是,这不能保证为该值提供ASCII字符。仅在这段简单的代码中,字符集之间就有各种不同的转换。例如,字符串文字0x4D中的字符用实现定义的执行字符集中的相应值初始化。打印字符也取决于显示它的媒体的解释

最好是提供从ASCII值到字符的映射。可以使用索引为ASCII值且元素为相应字符的数组执行此操作。

可以使用std::stoi将字符串转换为整数。从0x前缀自动检测到基数:

但是,这不能保证为该值提供ASCII字符。仅在这段简单的代码中,字符集之间就有各种不同的转换。例如,字符串文字0x4D中的字符用实现定义的执行字符集中的相应值初始化。打印字符也取决于显示它的媒体的解释


最好是提供从ASCII值到字符的映射。您可以使用索引为ASCII值且元素为相应字符的数组来执行此操作。

要使用Bas建议的stringstreams:

int x;
string s = "0x10";
stringstream ss;
ss << hex << s;
ss >> x;

但我认为这样做是一种浪费。

按照Bas的建议使用stringstreams:

int x;
string s = "0x10";
stringstream ss;
ss << hex << s;
ss >> x;

但我认为这样做是一种浪费。

这里有一个基于std::stringstream的解决方案:


下面是一个基于std::stringstream的解决方案:


但最初十六进制是在一个字符串中。有没有一种方法可以把这个十六进制放进一个字符中?但最初十六进制是在一个字符串中。有没有办法把那个十六进制变成一个字符?
std::istringstream iss ("0x4D");
iss.flags(std::ios::hex);
int i;
iss >> i;

std::cout << "[" << (char)i << "]" << std::endl;   //--> prints "[M]"