任意进制转换
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 }
My Github Blog: mdgsf.github.io

浙公网安备 33010602011771号