\param dest 轉換完畢的n進制字符串
\param n 目的進制數(十六進制填16、二進制填2等)
\param src 初始m進制字符串
\param m 初始進制數,與目的進制數表示方法相同
\warning 初始m進制字符以10進製表示若超過int表示範圍,結果未定義;且轉換爲n進制需要的字符個數未知。
*/
void m2n(char *dest, unsigned int n, const char *src, unsigned int m)
{
char ch, *p = dest - 1;
unsigned int i = 0;
/* m進制字符串src轉爲10進制數i */
while(*src) i = i * m + *src++ - '0';
/* 輾轉相除得出逆序的n進製表示在dest */
while(i) *dest++ = i % n + '0', i /= n;
/* 在dest寫入結尾符 */
*dest = '\0';
/* 逆序字符串 */
while(++p < --dest)
{
ch = *dest;
*dest = *p;
*p = ch;
}
}
int main()
{
char result[100];
m2n(result, 10, "56", 16);
printf(result);
return 0;
}