十进制转十六进制(普通版)

#include<iostream>
#include<string>
#include<sstream>








using namespace std;








string getTwo(long long data);
string getOX(string data);
string T_X(string data);








int main(int argc,char** argv){

long long data;
cin >> data;
cout << getOX(getTwo(data));

return 0;
}








string getTwo(long long data){

string temp = "";

while(data){

int value = data - 2 * (data / 2);
data = data / 2;
string value_temp = "";
stringstream ss;
ss << value;
ss >> value_temp;
ss.clear();
temp = value_temp + temp;
}

return temp;
}








string getOX(string data){

string resault = "";
int length = data.length();
int flag = 0;

if(length % 4 == 0){


}else if(length % 4 == 1){

data = "000" + data;

}else if(length % 4 == 2){

data = "00" + data;

}else if(length % 4 == 3){

data = "0" + data;
}

length = data.length();

if(length == 0){

return "0";
}

for(int i = 0;i < length;i = i + 4){

string temp = "";
temp = temp + data[i] + data[i + 1] + data[i + 2] + data[i + 3];

if(T_X(temp) != "0"){

flag = 1;
}

if(flag){

resault = resault + T_X(temp);
}
}

return resault;
}








string T_X(string data){

if(data == "0000"){

return "0";

}else if(data == "0001"){

return "1";

}else if(data == "0010"){

return "2";

}else if(data == "0011"){

return "3";

}else if(data == "0100"){

return "4";

}else if(data == "0101"){

return "5";

}else if(data == "0110"){

return "6";

}else if(data == "0111"){

return "7";

}else if(data == "1000"){

return "8";

}else if(data == "1001"){

return "9";

}else if(data == "1010"){

return "A";

}else if(data == "1011"){

return "B";

}else if(data == "1100"){

return "C";

}else if(data == "1101"){

return "D";

}else if(data == "1110"){

return "E";

}else if(data == "1111"){

return "F";

}else{

return "X";
}
}



原文地址:https://www.cnblogs.com/viplanyue/p/12700718.html