C++任意進制轉任意進制的轉換函數實現

作爲一個半路出家的C/C++開發者,平日裏最討厭使用C++處理字符串以及處理類型轉換的問題,不甚其煩。


今天在做CVTE的筆試題的時候又遇到了進制轉換 因此在這裏對進制轉換做一個總結吧。


C++內置的itoa是非常強大的,能夠將十進制的int型轉換成任意進制的字符串輸出,利用這一點,實際上任意進制的互相轉換利用itoa以及設計一個函數來實現任意進制-》十進制的組合即可。。PS:C++中現在似乎推薦使用_itoa,itoa將會報錯。


貼上代碼:

long  toTen(char a[], int bit)
		 {
		     int length = strlen(a);
		     int i, b = 1, sum = 0; //i要做數組a的下標,注意其起止範圍 
		     for (i = length - 1; i >= 0; i--)
			     {
			         if (a[i] >= 'A')
				         {
				             sum += (a[i] - 'A' + 10) *b;
				             b *= bit;
				         }
			         else
				         {
				             sum += (a[i] - '0') *b;
				             b *= bit;
				         }
			     }
		     return sum;
		 }
以上爲任意進制轉換爲10進制;

int main()
{
	char s1[] = "E";
	int a = toTen(s1, 16);
	cout << a << endl;
	char temp[200];
	int b= 15;
	_itoa(a, temp, 16);
	cout << temp;
	
	system("pause");
	return 0;
}
通過這樣就實現了互相轉換。



發佈了38 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章