任意进制转换

N: 找不到是借鉴哪里的了!!!

 

 1 void vReverse(char * pc)
 2 {
 3     char acTemp;
 4     int iLen = strlen(pc);
 5     for (int i=0; i<=(iLen-2)/2; i++)
 6     {
 7         acTemp = pc[i];
 8         pc[i] = pc[iLen-1-i];
 9         pc[iLen-1-i]=acTemp;
10     }
11 }
12 //2进制转为10进制,则iBase1=2, iBase2=10
13 void vN2N(const char * pcSource, char * pcDest, int iBase1, int iBase2)
14 {
15     const char * pcHead = &pcSource[0];
16     int iSum = 0;
17     int iIndex;
18     for (iIndex=0; pcHead[iIndex] != '\0'; iIndex++)
19     {
20         iSum *= iBase1;
21         if(pcHead[iIndex]<='9' && pcHead[iIndex]>='0')
22         {
23             iSum = iSum + (pcHead[iIndex] - '0');
24         }
25         else
26         {
27             iSum = iSum + (pcHead[iIndex] - 'A' + 10);
28         }
29     }
30     cout<<"iSum : "<<iSum<<endl;
31 
32     int iTemp = 0;
33     for (iIndex = 0; iSum != 0; iIndex++)
34     {
35         iTemp = iSum % iBase2;
36         if(iTemp<=9 && iTemp>=0)
37         {
38             pcDest[iIndex] = iTemp + '0';
39         }
40         else
41         {
42             pcDest[iIndex] = iTemp - 10 + 'A';
43         }
44         iSum /= iBase2;
45     }
46     pcDest[iIndex] = '\0';
47     vReverse(pcDest);
48 }

 

posted @ 2014-12-01 19:01  MDGSF  阅读(132)  评论(0)    收藏  举报