一、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-hant/n/304171.html