将一串十六进制存储到字符中
Store a string of hex into a char?
所以我有一个包含十六进制值的字符串。例如,我的字符串可能有
string a = "0x4D";
是否可以将0x4D分配给字符?因为我知道,如果我有
char c = 0x4D
然后我可以打印出它的 ASCII 符号,这将是 M。
是否可以将"0x4D"存储到字符中,以便我可以打印出其 ascii 符号?如果有人有任何提示,将不胜感激!如果有更好的方法,请告诉我!谢谢!
可以使用
strtol
将字符串转换为数字。然后,您可以打印此数字或使用它执行其他您喜欢的操作。
哦,等等,你把它标记为C++,strtol
非常C风格。在C++中,您可以使用字符串流,并从中提取一个数字。
您可以使用
std::stoi
将字符串转换为整数(从0x
前缀自动检测基数):
std::string str = "0x4D";
char c = static_cast<char>(std::stoi(str));
std::cout << c << std::endl;
但是,这不能保证为您提供该值的 ASCII 字符。仅在此简单代码中,字符集之间就发生了各种转换。例如,字符串文本"0x4D"
中的char
s使用实现定义的执行字符集中的相应值进行初始化。印刷字符也取决于显示它的媒体的解释。
您能做的最好的事情就是提供从 ASCII 值到字符的映射。您可以使用一个数组来执行此操作,其中索引是 ASCII 值,元素是相应的字符。
按照 Bas 的建议使用字符串流:
int x;
string s = "0x10";
stringstream ss;
ss << hex << s;
ss >> x;
但我认为这是一种浪费的方式。
这是一个基于 std::stringstream
的解决方案:
std::istringstream iss ("0x4D");
iss.flags(std::ios::hex);
int i;
iss >> i;
std::cout << "[" << (char)i << "]" << std::endl; //--> prints "[M]"
相关文章:
- 使用无符号字符数组有效存储内存
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 在向量中存储字符指针
- 哪一个更适合存储字符、矢量<char>或字符串?
- 如何在整数数组中存储字符
- 在队列中存储字符数组
- 如何动态存储字符数组
- 存储字符数组
- 存储字符和整数
- 在向量中存储字符串会导致错误
- fill-Arry函数不存储字符并输出符号
- 在内存中存储字符指针
- 存储字符数组值错误(c++)
- 如何使用c++在字符串中存储字符
- 在vector中存储字符指针,c++
- 在指向结构的指针中存储字符时遇到问题
- 存储字符指针,然后稍后填充
- 我如何用c++在闪存STM32F4 HAL中存储字符