我编写了一个程序,将字符串转换为int,然后将十进制数转换为十六进制。我正在努力检查十六进制是否只包含这些字符A,B,C,D,E,F,1,0。如果是这样,将标志设置为true或false。
#include<iostream>
#include <stdlib.h>
#include <string>
#include <sstream>
string solution(string &S){
int n = stoi(S);
int answer;
cout << "stoi(\"" << S << "\") is "
<< n << '\n';
//decToHexa(myint);
// char array to store hexadecimal number
string hexaDeciNum[100];
// counter for hexadecimal number array
int i = 0;
while(n!=0)
{
// temporary variable to store remainder
int temp = 0;
// storing remainder in temp variable.
temp = n % 16;
// check if temp < 10
if(temp < 10)
{
hexaDeciNum[i] = temp + 48;
i++;
}
else
{
hexaDeciNum[i] = temp + 55;
i++;
}
n = n/16;
}
// printing hexadecimal number array in reverse order
for(int j=i-1; j>=0; j--){
cout << hexaDeciNum[j] << "\n";
return "";
}
int main(){
string word = "300";
cout << solution(word);
return 0;
}
答案 0 :(得分:1)
好的,这不是完全回答你所要求的,但它是整个转换问题的一个有价值的替代方法:
RowNumber(Nothing)
现在您不必进行差异化...您甚至可以使用此方法进行逆转换:
char letter(unsigned int digit)
{
return "0123456789abcdefg"[digit];
// alternatively upper case letters, if you prefer...
}
另一个优点:即使在这些奇怪的字符集上也可以使用,其中数字和字母不一定被分组到范围内(例如EBCDIC)。