我正在尝试制作一个十六进制计算器。十六进制计算需要能够读取字母和数字。那么如何在能够读取数字的同时读取并为字母分配数值呢?我需要能够读取值0-9并将字母A-F赋值为10-15。
答案 0 :(得分:3)
您可以使用std::hex
输入十六进制值。
例如:
int my_value;
std::cin >> std::hex >> my_value;
它也适用于std::cout
:
std::cout << std::hex << my_value;
请注意,my_value
默认仍被视为十进制。
或者你可以这样做:
std::string input;
std::cin >> input;
int hex = 0;
for(unsigned int i = 0; i < input.length; ++i)
{
int temp = 0;
if(input[i] >= '0' && input[i] <= '9')
temp = (input[i] - '0');
else if(input[i] >= 'a' && input[i] <= 'f')
temp = (input[i] - 'a');
else if(input[i] >= 'A' && input[i] <= 'F')
temp = (input[i] - 'A');
temp += i * 16;
hex =+ temp;
}
几点说明:
char
算术。这有点难以理解。char
转换为int
,可能会导致某些系统出现问题答案 1 :(得分:0)
你可以使用字符串
string s = "cb10"
关于如何使用,你可以
s[0] = 'a' //s = "ab10"
s[1] = '3' //s = "a310"
int i = s[1] - '0' //change char to int, i = 3
答案 2 :(得分:0)
好吧,我现在已经使用这段代码了一段时间,并且它一直运行良好。谢谢大家。
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int conv;
cout <<"Please enter appropriate command for conversion;" << endl;
cout <<"1. Hexadecimal to Denary." << endl;
cout <<"2. Denary to Hexadecimal." << endl;
cin >> conv;
if (conv == 1)
{
int xvar;
cout <<"Please enter the number in hexadecimal." << endl;
std::cin >> std::hex >> xvar;
std::cout << std::hex << xvar << endl;
std::cout << std::dec << xvar << endl;
}
if (conv == 2)
{
int yvar;
cout <<"Please enter the number in denary." << endl;
std::cin >> std::dec >> yvar;
std::cout << std::dec << yvar << endl;
std::cout << std::hex << yvar << endl;
}
}