0001 void convert ( Stack<char>& S,unsigned long long n, int base ) { //正整数n的2<=base<=16进制打印(迭代版) 0002 char digit[] = "0123456789ABCDEF"; //数位符号,如有必要可相应扩充 0003 while ( n > 0 ) { //由低到高,逐一计算出新进制下的各数位 0004 S.push ( digit[ n % base ] ); //余数(当前位)入栈 0005 n /= base; //n更新为其对base的除商 0006 } 0007 } //新进制下由高到低的各数位,自顶而下保存于栈S中