一、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-tw/n/304171.html
微信掃一掃
支付寶掃一掃