作爲一個半路出家的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;
}
通過這樣就實現了互相轉換。