一、16進制轉換
在C++中,可以使用格式化輸出函數「printf」將十進制數以16進制的形式輸出。如:
#include
int main(){
int n = 255;
printf("%x", n); //輸出ff
return 0;
}
而將16進制數轉換為10進制數,則可以使用數學運算,如:
#include
#include
using namespace std;
int hexToDec(string hex){ //hex為十六進制數字符串
int dec = 0;
int len = hex.size();
for(int i = 0; i = '0' && hex[i] = 'A' && hex[i] = 'a' && hex[i] <= 'f'){
temp = hex[i] - 'a' + 10;
}
dec += temp * pow(16, len - i - 1);
}
return dec;
}
int main(){
string hex = "ff";
cout << hexToDec(hex); //輸出255
return 0;
}
二、C語言進制轉換規則
C語言中,數字的字面量可以表示為以下形式:
整型字面量:十進制、八進制(以0開頭)、十六進制(以0x或0X開頭)
浮點型字面量:十進制、科學計數法(e或E表示乘以10的幾次方)
字符型字面量:單引號括起來的字符
三、C進制轉換函數
C語言中,可以使用「atoi」、「atof」、「strtod」等函數來進行進制轉換。
例如:
#include
#include
int main(){
char* str1 = "11";
printf("%d", atoi(str1)); //輸出11
char* str2 = "11.22";
printf("%f", atof(str2)); //輸出11.220000
char* str3 = "11.22";
printf("%f", strtod(str3, NULL)); //輸出11.220000
return 0;
}
四、C進制轉換代碼
以下代碼實現將一個10進制數轉換為另一種進制數:
#include
using namespace std;
int main(){
int n = 255;
int base = 16;
string res = "";
while(n > 0){
int temp = n % base;
if(temp >= 10) res = char(temp - 10 + 'A') + res;
else res = char(temp + '0') + res;
n /= base;
}
cout << res; //輸出FF
return 0;
}
五、進制轉換器C
以下是一個基於C++開發的簡易進制轉換器:
#include
#include
using namespace std;
int decToAny(int n, int base){
string res = "";
while(n > 0){
int temp = n % base;
if(temp >= 10) res = char(temp - 10 + 'A') + res;
else res = char(temp + '0') + res;
n /= base;
}
cout << res;
return 0;
}
int anyToDec(string any, int base){
int dec = 0;
int len = any.size();
for(int i = 0; i = '0' && any[i] = 'A' && any[i] = 'a' && any[i] <= 'f'){
temp = any[i] - 'a' + 10;
}
dec += temp * pow(base, len - i - 1);
}
return dec;
}
int main(){
int op = 0;
while(true){
cout << "請選擇轉換方式:" << endl;
cout << "1. 10進制轉x進制" << endl;
cout << "2. x進制轉10進制" <> op;
if(op == 1){
int n = 0, base = 0;
cout << "請輸入需要轉換的十進制數:" <> n;
cout << "請輸入需要轉換的進制數(2~16):" <> base;
if(base >= 2 && base <= 16){
cout << "轉換結果為:" << endl;
decToAny(n, base);
break;
}
}else if(op == 2){
string any = "";
int base = 0;
cout << "請輸入需要轉換的數字:" <> any;
cout << "請輸入該數字的進制(2~16):" <> base;
if(base >= 2 && base <= 16){
cout << "轉換結果為:" << endl;
cout << anyToDec(any, base);
break;
}
}
}
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304171.html
微信掃一掃
支付寶掃一掃